当前位置: 首页 > news >正文

前端项目配置 prettier、eslint、lint-stages、husky、commitlint 、style-lint设置代码书写和提交规范

 prettier中文网:Options · Prettier 中文网

 eslint中文网 :ESLint 中文网

 github husky : https://github.com/typicode/husky 

commitlint.js 官网:commitlint - Lint commit messages 、github:GitHub - conventional-changelog/commitlint: 📓 Lint commit messages

style-lint :Configuring | Stylelint 

 github lint-staged : https://github.com/okonet/lint-staged

prettier: 

主要作用:格式化代码,新建配置文件进行 更加精细的 颗粒度配置

.prettierrc (看官网、配置文件名多种方式)     【rc 代表 run commond】

{"singleQuote": true,"trailingComma": "none","tabWidth": 2,"semi": true,"printWidth": 80,"arrowParens": "avoid"
}

eslint:

主要作用: 代码格式进行校验,配置文件进行精细的颗粒度配置

npm init @eslint/config  进行自定义配置

"lint": "eslint  test1.js   --ext .js src/",
"lint:fix": "eslint test1.js  --ext  .js src/ --fix",

启动命令:npm run lint 进行 格式校验,后缀是校验的 文件名和文件夹名 

此处表示:对 根目录的 test1.js 和 src下的 .js文件进行校验 , --ext 是 extension(扩展 )的缩写

加 :fix对一下简单的不符规则进行修复 (逗号,分号,间隙,单引号等),

eslint 校验的格式可以与 prettier配置进行配合、 文件保存后就符合lint规则

具体内容看官网

.eslintrc  配置参考

module.exports = {env: {browser: true,es2021: true},extends: ['eslint:recommended', 'plugin:vue/vue3-essential'],overrides: [{env: {node: true},files: ['.eslintrc.{js,cjs}', '*.js'],parserOptions: {sourceType: 'script'}}],parserOptions: {ecmaVersion: 'latest',sourceType: 'module'},plugins: ['vue'],rules: {indent: ['error', 2],'linebreak-style': ['error', 'unix'],quotes: ['error', 'single'],semi: ['error', 'always'],'max-len': ['error', { code: 150, tabWidth: 4 }] // 120 chars per line},ignorePatterns: [],
};

.eslintignore配置eslint忽略文件

 eslint忽略文件

src/main.js

lint-staged

husky

@commitlint/cli

1、husky
husky 的读音为 /ˈhʌski/

Husky 是一个 Git Hook 工具,可以帮助我们在 Git 事件发生时自动运行脚本。Git Hook 是一种机制,它允许在 Git 执行操作时自动运行特定脚本,以执行自定义操作。

使用 Husky,可以轻松地添加 Git Hooks,并在特定的 Git 事件(如提交代码)发生时执行自定义的脚本。例如,在提交代码之前自动运行代码格式化脚本或运行代码静态分析工具等。

Husky 支持多种 Git Hooks,包括 pre-commit、pre-push 等,并可以配置多个钩子,以便在多个 Git 事件发生时执行自定义脚本。

Husky 是一个基于 Node.js 的工具,可以在 Node.js 项目中使用。

2、lint-staged
lint-staged 的读音为 /lɪnt steɪdʒd/。

lint-staged 是一个工具,可以在 Git 暂存区的文件上运行指定的 lint 工具,以便于仅在需要时执行 lint 检查。它通常与 Husky 配合使用,以在提交代码前运行 lint-staged。使用 lint-staged 可以大大提高 lint 检查的效率,因为只需要针对本次提交的文件执行 lint 检查,而不是所有的文件。

lint-staged 支持多种 lint 工具,例如 ESLint、Prettier、Stylelint 等,并可以配置多个 lint 工具。它还支持使用 glob 模式来选择要运行 lint 工具的文件。

lint-staged 是一个基于 Node.js 的工具,可以在 Node.js 项目中使用。

1、npm install husky -D
2、npm pkg set scripts.prepare="husky install"npm run prepare
3、npx husky add .husky/pre-commit "npm test"git add .husky/pre-commitpackage.json 加lint-staged配置
4、"scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build","lint": "eslint  --ext .js,.vue src/","lint:fix": "eslint --ext .vue,.js src/ --fix","prepare": "husky install"},"lint-staged": {"*.{js,jsx,vue,ts,tsx}": ["npm run lint","git add"]},

此时 在 commit '时 已经可以对代码格式校验。

如果有问题,代码提交不上来git

报错解决后【警告不影响】

但是现在问题是   【   git commit -m  ’111‘     】 也能提交成功,这对代码后期代码审核非常不利

 于是我们用 @commitlint/cli  进行强制规范 提交信息格式

@commitlint/cli
@commitlint/cli 的读音为 /kəˈmɪtlɪnt kli/。

@commitlint/cli 是一个命令行工具,用于校验 Git 提交信息是否符合规范。它通常与 Husky 和 lint-staged 配合使用,以在提交代码前对提交信息进行校验,从而确保提交信息的格式和内容符合项目规范和约定。

@commitlint/cli 遵循 Conventional Commits 规范,可以自定义配置校验规则。它支持多种校验规则,例如校验提交信息的类型、描述和主体等,并可以在不同的提交阶段执行不同的校验规则。例如,在提交代码前只检查代码格式和 lint 检查,而在合并代码时进行更全面的提交信息校验。

@commitlint/cli 是一个基于 Node.js 的工具,可以在 Node.js 项目中使用。

注意:Commit Lint 是需要搭配Husky才能实现对Git 提交信息的校验的。

参考文章:git commit时进行代码检查(lint-staged)配置 - 简书

前端Vuer,请给你的项目加上 ESLint - 知乎

git规范代码提交格式:commitlint+husky安装_@commitlint/cli': ^13.1.0-CSDN博客

style-lint:

项目css校验 :

看项目demo配置。

重要

:把style-lint启动命令放到 pre-commit钩子里面,就可以在commit的时候对css进行校验。

规则demo   .stylelintrc.js :

 // 如果是vue项目,需要安装'stylelint-config-recommended-vue',

/*** https://stylelint.io/user-guide/configure* 启动钩子在 .husky/pre-commit 中* 校验:--fix 修复*/
module.exports ={"extends": ["stylelint-config-standard","stylelint-config-recommended-vue"],"unit-allowed-list": ["%","deg","px","rem","ms"],"declaration-property-unit-allowed-list": {"/^border/": ["px"],"/^padding|^gap/": ["rem"]},"rules": {"selector-max-id": 5}
}

 

参考:stylelint最佳实践 - 知乎 

经过一番摸索,又将配置优化:

只用 在 .husky/pre-commit 钩子中配置

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
#解释一下这个命令的含义:
#"$0":表示当前脚本的路径和名称。
#dirname -- "$0":利用 dirname 命令获取脚本所在的目录路径。-- 是一个选项分隔符,用于处理特殊路径名称。
#$(...):表示将命令的输出作为参数返回。
#因此,"$(dirname -- "$0")/_/husky.sh" 的含义是获取当前脚本所在的目录路径,然后拼接上 _/husky.sh,得到一个完整的路径。
#根据上述解释,这个命令可能是在一个 Husky 钩子脚本中使用,用于获取 Husky 脚本所在的路径,然后调用相应的脚本文件。
#Husky 是一个 Git 钩子管理工具,可以在 Git 事件(如提交代码、切换分支等)发生时执行指定的脚本。在使用 Husky 时,通常会将 Husky 的相关脚本放在项目的特定位置,并在项目中的配置文件中指定相应的钩子和脚本路径。
npx lint-staged 

等commit的时候 后走到 package.json中的 lint-staged字段【数组】

可以将所有的 lint 校验和修复规则配置在这里

 "scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build","lint": "eslint  --ext .js,.vue src/","lint:fix": "eslint --ext .vue,.js src/ --fix","prepare": "husky install  ","commitlint": "commitlint --edit"},"lint-staged": {"**/*.{js,jsx,vue,ts,tsx}": ["npx eslint **/*.{js,jsx,vue,ts,tsx} --fix "],"**/*.{css,less,scss,vue}": ["npx stylelint **/*.{css,less,scss,vue} --fix"],"**/*.{css,less,scss,vue,js,jsx,vue,ts,tsx}": ["npx pretty-quick --staged"]},"dependencies": {"core-js": "^3.8.3",

这样当 commit的时候 会执行 eslint、stylelint、prettier格式校验和格式化,当一些 lint错误(没加分号等 与你 .eslintrc配置的有关)简单的会自动帮你补全 ,一些严重的会 报错,无法提交。

执行命令需要去官网慢慢摸索,lint颗粒度去官网慢慢配置。

pretty-quick 需要安装。见:Pre-commit Hook · Prettier 中文网

nice

项目demo 地址

https://gitee.com/guoyongkun-123/prettier-eslint-lint-stages-husky-commitlint-gyk

相关文章:

前端项目配置 prettier、eslint、lint-stages、husky、commitlint 、style-lint设置代码书写和提交规范

prettier中文网:Options Prettier 中文网 eslint中文网 :ESLint 中文网 github husky : https://github.com/typicode/husky commitlint.js 官网:commitlint - Lint commit messages 、github:GitHub - conventiona…...

如何开始着手一篇Meta分析 | Meta分析的流程及方法

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…...

【PID控制技术】

PID控制技术 简介控制原理相关术语调参技巧相互作用 相似算法与PWM对比 应用范围优缺点硬件支持 简介 PID控制是一种在工业过程控制中广泛应用的控制策略,其全称是比例-积分-微分(Proportional Integral Derivative)控制。它的基本原理是根据…...

docker openjdk:8-jdk-alpine 修改时区、添加字体

新建Dockerfile文件,制作新镜像 FROM openjdk:8-jdk-alpine 1、解决字体问题 RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 2、解决时差问题 # 解决时差8小时问题ENV TZAsia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /et…...

9+单细胞+实验验证,探讨单基因对癌细胞转移作用的思路方向

今天给同学们分享一篇单细胞实验的生信文章“Identification of RAC1 in promoting brain metastasis of lung adenocarcinoma using single-cell transcriptome sequencing”,这篇文章于2023年5月18日发表在Cell Death Dis期刊上,影响因子为9。 本研究旨…...

《计算机视觉中的多视图几何》笔记(7)

7 Computation of the Camera Matrix P P P 这章讲的是摄像机参数估计。摄像机标定,本质上就是求摄像机矩阵 P P P,当我们知道足够多的 X ↔ x X \leftrightarrow x X↔x,我们该如何计算 P P P?如果知道3D和2D点的对应&#xff…...

Python经典练习题(四)

文章目录 🍀第一题🍀第二题🍀第三题 🍀第一题 题目:打印出如下图案(菱形): 我们首先分析一下,本题实现的步骤主要有两个,分别是前四行和后三行 前四行:第一…...

Mac Pro在重装系统时提示“未能与恢复服务器取得联系”

检查网络连接: 确保你的Mac Pro连接到稳定的网络。尝试更换其他网络,例如切换到不同的Wi-Fi或使用有线连接。 系统时间校正: 错误的系统时间有时会导致与恢复服务器的连接问题。在恢复模式下打开终端(在实用工具菜单中选择终端&a…...

【C/C++】指针常量、常量指针、指向常量的常指针

目录 1.概念2. const pointer3. pointer to a constant3.1 (pointer to a constant)-constant3.2 poiner-constant3.3 (pointer to a constant)-variable3.4 poiner-variable3.5 多层级关系时的兼容3.6 用处 4. a constant pointer to a constant 1.概念 首先明确这几个术语的…...

【VUE复习·4】计算属性computed:原理、完整写法(不常用)、与 methods 的区别、简写(最常用)、应用案例!

总览 1.简介计算属性 2.computed 与 methods 的区别 3.computed 的简写(不修改计算属性,只显示) 4.经典应用场景 一、计算属性 1.为什么需要计算属性? 首先,如果我们要写一个插值语法,而 {{ }} 内的内容…...

Linux 基本语句_编译C过程

Linux撰写C语言并编译的过程 1、预处理 将所有的#define删除,并且展开所有的宏定义,并且处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等。处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。删除…...

MYSQL8解压版 windows 主从部署步骤及配置(包含配置文件,教程文件,免积分下载)

MYSQL8解压版 windows 主从部署步骤及配置 一.安装MSYQL 这里只讲大概,详细步骤、my.ini文件、安装包等会在页尾文件中(正常情况按首个mysql安装,只是名字有区别) 1.主库my.ini配置 [mysqld] #典型的值是5-6GB(8GB内存),8-11GB(16GB内存), 20-25GB(32GB内存)&…...

RabbitMQ的基本介绍

什么是MQ 本质是一个队列,只不过队列中存放的信息是message罢了,还是一种跨进程的通信机制,用于上下游传递信息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后,信息发送…...

AI智能视频监控技术如何助力美好乡村建设?

随着城市化发展,很多乡村设施也在逐渐完善,智能监控也成了乡村发展必不可少的一环,智能视频监控应该在乡村建设里如何发挥作用呢? 1、有效提升安全意识 通过在乡村重要区域、公共场所、道路等设置智能视频监控设备,可…...

【网络安全】2023年堡垒机品牌大全

随着大家网络安全意识的增加,随着国家等保政策的严格执行,越来越多的企业开始采购堡垒机。这里就给大家总结了部分堡垒机品牌,让大家参考参考。 2023年堡垒机品牌大全 1、行云堡垒 2、JumpServer 3、安恒 4、骞云 5、齐治 6、阿里云 …...

makefile相关知识的讲解

目录 makefile文件的介绍 step1:手动创建一个makefile文件 step2:在文件当中编辑指定的命令 step3:退出makefile文件并使用make执行文件当中的命令 step4:使用clean指令清除生成的文件 makefile当中的命令编写方式 目标文件和依…...

OpenCV中的HoughLines函数和HoughLinesP函数到底有什么区别?

一、简述 基于OpenCV进行直线检测可以使用HoughLines和HoughLinesP函数完成的。这两个函数之间的唯一区别在于,第一个函数使用标准霍夫变换,第二个函数使用概率霍夫变换(因此名称为 P)。概率版本之所以如此,是因为它仅分析点的子集并估计这些点都属于同一条线的概率。此实…...

Xilinx FPGA 程序固化重新上电程序不运行的问题

问题描述 FPGA直接下载bit文件,功能正常。 FPGA擦除FLASH,烧写FLASH,正常。 电源断电,重新上电,FALSH里面的程序没有启动,FPGA程序没有跑起来。–FLASH启动不正常。 解决办法 在XDC约束文件里边增加约束: ## Configuration options, can be used for all designs se…...

c++ 使用rapidjson对数据序列化和反序列化(vs2109)

RapidJSON是腾讯开源的一个高效的C JSON解析器及生成器&#xff0c;它是只有头文件的C库&#xff0c;综合性能是最好的。 1. 安装 在NuGet中为项目安装tencent.rapidjson 2. 引用头文件 #include <rapidjson/document.h> #include <rapidjson/memorystream.h> #…...

4.迭代最近点ICP及非线性优化求解

使用非线性优化方法求解ICP 文章目录 使用非线性优化方法求解ICP前情提要ICP问题回顾对矩阵变量求导数 ICP问题的非线性解法代码示例 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 前情提要 在迭代最近点算法ICP及SVD求解中介绍了ICP问…...

【redis总结】

文章目录 1、redis简介2、为什么要选择redis做缓存3、数据结构4、redis多线程模型redis6.0的变化 5、redis持久化AOF的实现过程RDB的实现过程 6、redis集群的搭建7、 redis过期删除和淘汰策略8、redis的内存淘汰策略 1、redis简介 Redis&#xff08;Remote Dictionary Server&…...

图数据库:释放关系的力量

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 在数据管理领域&#xff0c;图数据库已经成为一种强大的工具&#xff0c;它彻底改变了我们处理和分析复杂关系的方式。与依赖表和列的传统关系数据库不同&#xff0c;图…...

Windows系统如何临时关闭“Windows安全中心实时保护”

前言 启动windows depender实时保护可能会使系统不太流畅&#xff0c;也可能会导致我们的程序无法正常运行&#xff0c;因为它会拦截或搜索我们的正常工作。 暂时关闭windows depender的实时保护对许多用户来说非常重要。 一、Win10系统关闭方法 打开Windows安全中心&#…...

二叉树MFC实现

设有一颗二叉树如下&#xff1b; 这似乎是一颗经常用作示例的二叉树&#xff1b; 对树进行遍历的结果是&#xff0c; 先序为&#xff1a;3、2、2、3、8、6、5、4&#xff0c; 中序为&#xff1a;2、2、3、3、4、5、6、8&#xff0c; 后序为2、3、2、4、5、6、8、3&#xff1b…...

Nginx之客户并发数限制解读

目录 基本介绍 配置指令 limit_conn_zone limit_conn 其他 limit_rate limit_rate_after limit_req_zone limit_req 基本介绍 在我们进行系统开发设计中&#xff0c;要考虑服务器流量异常&#xff0c;负载过大等问题。对于大流量恶意的攻击访问&#xff0c;会带来带宽…...

白捡一个存储型XSS

本文由掌控安全学院 - 杳若 投稿 起因 利用fofa搜索时发现 org"China Education and Research Network Center" && body"/register" 任意用户注册 在找到该CMS的时候发现存在任意用户注册的情况 http://xxxx.edu.cn/student/Register.ashx …...

SpringMVC 学习(五)转发,重定向和传参

6. 转发和重定向 Spring MVC 的底层是 servlet&#xff0c;因此在 Spring MVC 中也存在转发和重定向的概念。 对于转发而言&#xff0c;其目的页面可以在 WEB-INF 目录下。重定向的目的页面不允许在 WEB-INF 目录下&#xff0c;因为重定向相当于用户再次发起一次请求&#xf…...

selenium不定位元素直接使用键盘操作(如弹框操作)

今天在使用selenium进行定位时&#xff0c;发现直接定位不了chrome的弹框&#xff0c;如这种弹框&#xff1a; 使用的是下面这行代码 driver.switch_to.alert.accept() 运行报错&#xff0c;说是没有 alert windown。。。。 啊&#xff1f;难道chrome的弹框不是用alert写的&…...

Inno Setup安装中文语言

以版本6.2.2为例&#xff1a; 默认安装的Inno Setup是不支持中文语言的&#xff0c;需要我们自行下载安装。 一、打开官网Inno Setup Translations (jrsoftware.org) 下载的文件如下 二、然后重命名放到Inno Setup的如下安装目录中 三、然后重启Inno Setup即可。 打包后的…...

【数据库——MySQL】(10)视图和索引

目录 1. 视图1.1 创建视图1.2 查询视图 2. 索引2.1 索引的分类2.2 索引的建立 参考书籍 1. 视图 1.1 创建视图 基础语法&#xff1a; CREATE [OR REPLACE] VIEW 视图名[(列名表)]ASSELECT语句[WITH CHECK OPTION]说明&#xff1a; 在默认情况下&#xff0c;将在当前数据库创…...

java网站开发招聘/楚雄今日头条新闻

TIOBE编程语言排行榜TIOBE编程语言排行榜&#xff0c;每月更新一次&#xff0c;依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供&#xff0c;其结果作为当前业内程序开发语言的流行使用程度的有效指标。该指数可以用来检阅开发者的编程技能能否跟上趋势&#xf…...

做任务给佣金的网站/亚马逊查关键词排名工具

题目链接&#xff1a;http://61.187.179.132/JudgeOnline/problem.php?id1856 题意&#xff1a;有n个1和m个0组成的串&#xff0c;使得任意前k个中1的个数不少于0的个数。有多少种这样的串&#xff1f; 思路&#xff1a;设1为向(1,1)方向走&#xff0c;0为向(1,-1)方向走。那么…...

app制作网站有哪些 请列举/百度灰色关键词代做

2019独角兽企业重金招聘Python工程师标准>>> 要买新手机了旧手机怎么办&#xff1f;我们可以废物利用下&#xff0c;把旧的手机变成一个远程监控摄像头。这里使用Java创建手机camera客户端和远程服务上的监控界面。 参考原文&#xff1a; Making Android Smart Phon…...

垫江网站建设哪家好/免费跨国浏览器

参考 我只是个搬运工, 一个探路者, 这个不是我写的, 原作者在这里 为什么有这样的需求? ...鬼知道为什么不存memcache或者redis,鬼知道你会遇到什么样的需求, 那还能怎么办,自己解决呗,为了避免下次再一顿百度..一顿谷歌...我就记录一下 建立对应的数据表 CREATE TABLE think_…...

建设部的网站/seo站长优化工具

下面是定义初始化 #初始化输入的张量 - torch.empty是返回一个包含未初始化数据的张量self.input torch.empty(size(self.opt.batchsize, 3, self.opt.isize, self.opt.isize), dtypetorch.float32, deviceself.device)self.label torch.empty(size(self.opt.batchsize,), dt…...

河南省交通基本建设质量检测监督站网站/付费推广方式有哪些

css实现固定背景图像的方法发布时间&#xff1a;2020-08-29 11:26:59来源&#xff1a;亿速云阅读&#xff1a;81作者&#xff1a;小新小编给大家分享一下css实现固定背景图像的方法&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章给大家参考一下&#xff…...