使用eslint、lint-staged、husky搭建前端项目
随着前端开发的项目越来越复杂,参与人数越来越多,创建一个统一风格的、规范化的项目对于一个团队来说至关重要。因此前端项目,需要包括eslint校验、prettier代码优化、husky+lint-staged代码提交校验。
项目搭建
新建 vangle 项目
cd vangle 进入项目
初始化 package.json 文件
1 |
|
没安装 pnpm 的需要提前安装一下
1 |
|
- 新建 packages 目录,里面存放我们要开发的项目,例如 components、cli 等
- 创建 pnpm-workspace.yaml 文件,并指定 packages
1 |
|
- 安装 typescript 并初始化 tsconfig.json 文件
1 |
|
参考配置:
1 |
|
添加代码规范
prettier
Prettier
是一个固执己见(提供了一份自认为是合适大多数人的代码风格)的代码格式化程序。
它支持的代码如下:
- JavaScript
- JSX
- Angular
- Vue
- Flow
- TypeScript
- CSS, Less, and SCSS
- HTML
- Ember/Handlebars
- JSON
- GraphQL
- Markdown, 包括 GFM 和 MDX
- YAML
Prettier
相比于ESLint/TSLint/stylelint
等工具对代码风格控制等更加细致。因此通常用Prettier
来让代码更漂亮,用linter
来捕捉代码语法上的错误。
安装依赖
1 |
|
根目录创建 .prettierrc.js
1 |
|
eslint
ESLint
是一个根据方案识别并报告 ECMAScript/JavaScript
代码问题的工具,其目的是使代码风格更加一致并避免错误。
- ESLint 使用
Espree
对JavaScript
进行解析。 - ESLint 在代码中使用
AST
评估方案。 - ESLint 完全是插件式的,每个规则都是一个插件,你可以在运行时中添加更多插件。
安装依赖
1 |
|
配合 prettier
当 ESLint 的规则和 Prettier 的规则相冲突时,就会发现一个尴尬的问题,用其中一种来格式化代码,另一种就会报错。prettier 官方提供了一款工具 eslint-config-prettier 来解决这个问题,本质上这个工具其实就是禁用掉了一些不必要的以及和 Prettier 相冲突的 ESLint 规则。
1 |
|
完成eslint配置
1 |
|
等待安装完成,可以看到目录下多了一个.eslintrc的文件
参考配置如下:
1 |
|
当执行eslint则会执行代码检查,加上–fix可以自动修改部分问题
package.json 中添加执行命令
1 |
|
这时我们可以在 packages 下创建 components/index.ts,写一些不符合规则的代码然后运行命令试试效果
husky + lint-staged
husky
它可以在项目中植入你设定的
git hooks,在
git提交代码的前后,你预设的
git hooks可以得到执行,以对代码、文件等进行预设的检查,一旦检查不通过,就可以阻止当前的代码提交,避免了不规范的代码和
git` 提交出现在项目中。
在提交代码前对项目进行lint
是非常有必要的,避免提交了不规范或者错误的代码。但在整个项目上运行lint
是很慢的,因此借助于lint-staged
可以仅对暂存区中的文件进行lint
操作。lint-staged
可以配合husky使用。
安装依赖,前提项目中先有git仓库
1 |
|
执行 npx husky install 创建.husky 目录,该目录下有一个 pre-commit 文件在每次提交代码的时候会执行,可以修改里面的运行脚本,自定义提交需要做的工作,如果没有 pre-commit 文件可以手动创建
1 |
|
在 package.json 中添加 lint-staged 配置
1 |
|
工具配合使用
我们在项目的某个需求开发完,需要提交代码时会执行git commit
命令,这个命令会触发 husky
的 pre-commit
钩子,在这个钩子中调用了lint-staged
命令,将暂存区中的文件进行匹配并作为eslint
和prettier
的输入,分别进行语法检查修复和代码格式化。
现在我们可以试着提交一下代码,如果不符合 eslint 校验规则的会自动修复,修复完成后需要再次提交
如果提交的时候eslint报错,但又想提交,则执行
1 |
|