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

news2024/11/17 4:40:46

 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-commit
 
package.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1047503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么大力推行国密算法SSL证书

国密算法SSL证书是一种采用我国自主研发的SM2公钥算法体系,支持SM2、SM3、SM4等国产密码算法及国密SSL安全协议的数字证书。相比于普通SSL证书,国密SSL证书具有以下特点: 自主可控:国密SSL证书采用我国自主研发的SM2公钥算法体系&…

十一,从摄像机打印HDR环境贴图

越来越接近真相了。我们很自然地想到,如果把漫游器放在中心打印,是不是就可以打印整个等距柱状投影图了呢?是的,但是,只是要注意的是,立方体贴图的内部和外部尽管一样,但是还是稍微有点模糊&…

Git 学习(2)

Git 学习(2) 版本号 Git 中文件的版本号是 40 位十六进制的数字字符串,采用 SHA-1 加密算法计算获得 这样一方面可避免在合并时的冲突问题 另一方面可以用于文件定位,其中前两位表示文件夹,后 38 位表示文件 指令介…

DDS信号发生器Verilog波形发生器FPGA

名称:DDS信号发生器Verilog波形发生器 软件:Quartus 语言:Verilog 要求: 1.可产生正弦波,锯齿波,三角波,方波4种波形,频率可调 2.具有波形选择、起动、停止功能。 代码下载&…

Flink on yarn 实战和源码分析

版本:1.13.6 目录 Flink on yarn 的3种模式的使用 yarn session 模式源码分析 yarn per-job模式源码分析 application模式源码分析 Flink on yarn 的3种模式的使用 Application Mode # ./bin/flink run-application -t yarn-application ./examples/streaming…

Apollo简易地图制作

在Apollo中模拟障碍物 一、准备工作 在模拟障碍物之前,需要下载并编译Apollo源码,过程可以依据Apollo开放平台文档,其中可能遇到的问题在这里或许可以寻找到答案 二、运行Dreamview 进入容器 cd ~/apollobash docker/scripts/dev_start.s…

515万新作者投身电商事业,抖音电商将投入更多资源扶持作者长期发展

9月27日,2023抖音电商作者峰会在上海举办。上千位抖音电商作者、MCN机构、精选联盟服务商、商家等重要生态伙伴参会,围绕大会主题“向新成长”进行了深入探讨。会上,抖音电商总裁魏雯雯提到,电商作者的事业有更多发展方向。为助力…

输送机使用的常见误区

输送机也称流水线,是指在自动化生产过程中起到运输货物,联通各个生产设备的主要机械设备。但在使用的过程中,很多用户对于输送机的使用存在一定的误区,导致设备故障频出,下面就针对用户已在使用输送机过程中的常见误区…

以太网中的介质共享访问控制机制

什么是CSMA/CD CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一种用于以太网等共享介质的访问控制机制。它用于协调多个设备共享同一物理介质(例如同一局域网)上的传输权利,以避免碰撞并提供公…

mac安装python2

Python 2 于 2020 年 1 月 1 日宣布结束支持,包括 Homebrew 在内的许多项目和包管理器已经停止支持 Python 2。 如果现在你还要安装 Python 2,需要从 Python 官网下载安装包: 访问 Python 的发布页面。从页面底部找到 Python 2 的最后一个版…

tp8 Editor.md

Editor.md - 开源在线 Markdown 编辑器 放于public文件夹下 html代码&#xff1a; <div class"layui-col-md12" id"content"><textarea name"content" placeholder"详情" class"layui-textarea">{notempty nam…

【Unity的HDRP渲染管线搭建配置VR交互场景_SteamVR 插件和Pico串流助手_经验分享】

HDRP渲染管线配置VR交互场景 Unity创建场景和相关配置下载导入项目打开PICO串流助手在Pico中的配置:用Steam串流VR_这篇的前置补充 Unity创建场景和相关配置 带HDRP Sample Scene 示例的 下载 SteamVR Unity插件地址02 导入项目

GEO生信数据挖掘(二)下载基因芯片平台文件及注释

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 下载平台文件 1.AnnotGPL参数改为TRUE,联网下载芯片平台的soft文件。&#xff08;国内网速奇慢经常中断&#xff09; 2.手工去GEO官网下载 转换芯片探针ID为gene name 拓…

ADS-B及雷达显示终端8.3

新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后&#xff0c;生成地形图片&#xff0c;然后对图片进行贴图&#xff0c;一一按规定位置、大小将地形图贴至底图上&#xff0c;而后在底图上进行二维矢量地图的绘制&#xff0c;包括…

uniapp app 导出excel 表格

直接复制运行 <template><view><button click"tableToExcel">导出一个表来看</button><view>{{ successTip }}</view></view> </template><script>export default {data() {return {successTip: }},metho…

【面试高高手】—— SpringBoot(11题)

文章目录 1.什么是SpringBoot?2.为什么需要Spring Boot&#xff1f;3.SpringBoot的特征&#xff1f;4.SpringBoot的两个策略是什么&#xff1f;5.说一下SpringBoot的自动装配流程&#xff1f;6.说下什么是 Bean?7.什么是 CSRF 攻击&#xff1f;如何避免&#xff1f;8. Spring…

python ToastNotifier TypeError got Nonetype

这个错误没什么影响&#xff0c;只是在通知结束后会抛出 如果你实在不爽&#xff0c;办法如下&#xff1a; 找到"<你的python安装路径>\Lib\site-packages\win10toast"&#xff0c;里面应该有__main__.py和__init__.py两个文件&#xff0c;打开__init__.py 找到…

人工智能(AI)在产生新创意方面有多出色?

传统智慧一直不太擅长此道。发现新的创业机会、为未满足的需求提供解决方案&#xff0c;以及为新公司命名都是非结构化的任务&#xff0c;似乎不适合由算法来完成。然而&#xff0c;人工智能的最新进展——特别是像ChatGPT这样的大语言模型的出现——正在挑战这种假定。 我们教…

【ES6知识】Promise 对象

文章目录 1.1 概述1.2 静态方法1.3 实例方法1.4 Promise 拒绝事件 1.1 概述 Promise 对象用于表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。是异步编程的一种解决方案&#xff08;可以解决回调地狱问题&#xff09;。 一个 Promise 对象代表一个在这…

Python实用技术——爬虫(二):爬虫需要使用的库

一&#xff0c;Requests库 1&#xff0c;主要使用方法&#xff1a; 1&#xff09;get&#xff08;&#xff09;方法&#xff1a; 这个Response对象中包含爬虫返回的内容。 除了request方法是基础方法外&#xff0c;其他都是通过调用request方法来实现的。 所以&#xff0c;我…