699 字
3 分钟
lint

lint 是什么?#

  • lint 是一种工具的名称,它用来标记代码中,某些可疑的,不具结构性(可能造成 bug)的语句
  • 是一种静态程序分析工具,最早适用于 C 语言,后来成为通用术语,可用于描述在任何一种编程语言中,用来标记代码中有疑义语句的工具

主流的三款 lint 工具: JSLint、JSHint、ESLint。其中 ESLint 使用 esprima 将源代码解析成 AST,然后你就可以使用任意规则来检测 AST 是否符合预期,这也是 ESLint 高可扩展性的原因

lint 工具的优势#

  • 避免低级 bug、找出可能发生的语法错误
  • 提示删掉多余代码
  • 确保代码遵循最佳实践
  • 统一团队的代码风格

代码提交规范自动化检测#

husky:一个为 git 增加 hook 的工具#

安装后,它会自动在仓库中的 .git/ 目录下增加相应的钩子,比如 pre-commit 钩子就会在你执行git commit的触发。 我们可以在 pre-commit 中实现一些比如 lint 检查、单元测试、代码美化等操作。

lint-staged:一个仅仅过滤出 Git 代码暂存区文件(被 git add 的文件)的工具#

这个很实用,因为如果对整个项目的代码做一个检查,可能耗时很长,如果是老项目,要对之前的代码做一个代码规范检查并修改的话,可能导致项目改动很大。所以这个 lint-staged,对团队项目和开源项目来说,是一个很好的工具,它是对个人要提交的代码的一个规范和约束。

lint 的作用:#

  • 规范代码提交:git commmit -m ‘xxx’ 时,用来检查 xxx 是否满足规范格式的工具。
  • pre-commit hook 中自动检测并修复部分代码规范(全量检测),搭配 lint-staged 使用可实现增量检测(仅检测缓存区)。

使用 husky + lint-staged 实现 git commit 代码检测和格式化#

安装步骤:#

安装 husky 和 lint-staged:

npm install husky lint-staged --dev

安装 pre-commit:

npm install pre-commit --save-dev

初始化并配置 pre-commit 文件#

npx husky-init

没有.husky 的文件时需要执行这一句:

npx husky add .husky/pre-commit "yarn run precommit"

安装完成后项目目录新增了.husky 文件夹

去 package.json 里面加点内容:#

{
  ...
  "script": {
    ...
    "precommit": "lint-staged",
    "prepare": "husky install"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,tsx,ts}": [
      "prettier --write",
      "eslint --fix"
    ]
  },
  ...
}
NOTE

如果出现 The ‘.husky/pre-commit’ hook was ignored because it’s not set as executable 报错,执行命令chmod ug+x .husky/*即可解决 commitlint 是用来保障项目 commit message 的规范和格式化

其它:#

lint
https://www.hzhi.top/posts/lint/
作者
Jim的独立博客
发布于
2023-07-07
许可协议
CC BY-NC-SA 4.0