Skip to content

项目规范 ​

介绍 ​

使用 lint 的好处

具备基本工程素养的同学都会注重编码规范,而代码风格检查(Code Linting,简称 Lint)是保障代码规范一致性的重要手段。

遵循相应的代码规范有以下好处

  • 较少 bug 错误率
  • 高效的开发效率
  • 更高的可读性

项目内集成了以下几种代码校验方式

  1. eslint 用于校验代码格式规范
  2. commitlint 用于校验 git 提交信息规范
  3. stylelint 用于校验 css/less 规范
  4. prettier 代码格式化

注意

lint 不是必须的,但是很有必要,一个项目做大了以后或者参与人员过多后,就会出现各种风格迥异的代码,对后续的维护造成了一定的麻烦。

ESLint ​

ESLint 是一个代码规范和错误检查工具,可以根据自己的团队设置符合自己团队的规范

手动校验代码 ​

bash
# 执行下面代码.能修复的会自动修复,不能修复的需要手动修改
npm run lint

配置项 ​

项目的 eslint 配置位于根目录下 eslint.config.js 内,可以根据团队自行修改代码规范

CommitLint ​

在一个团队中,每个人的 git 的 commit 信息都不一样,五花八门,没有一个机制很难保证规范化,如何才能规范化呢?可能你想到的是 git 的 hook 机制,去写 shell 脚本去实现。这当然可以,其实 JavaScript 有一个很好的工具可以实现这个模板,它就是 commitlint(用于校验 git 提交信息规范)。

配置 ​

commit-lint 的配置位于项目根目录下 .commitlintrc.cjs

Git 提交规范 ​

  • feat 新增功能 | New Feature
  • fix 修复缺陷 | Bug Fixes
  • init 初始化 | Init
  • docs 文档更新 | Documentation
  • style 代码格式 | Styles
  • refactor 代码重构 | Code Refactoring
  • perf 性能提升 | Performance Improvements
  • test 测试相关 | Tests
  • revert 回退代码 | Code Revert
  • build 构建相关 | Builds
  • chore 其他修改 | Chore
  • ci 持续集成 | Continuous Integration

如何关闭 ​

在 .husky/commit-msg 内注释以下代码即可

bash
# npx --no -- commitlint --edit

示例 ​

bash

git commit -m 'feat: add new component'

Stylelint ​

stylelint 用于校验项目内部 css 的风格,加上编辑器的自动修复,可以很好的统一项目内部 css 风格

配置 ​

stylelint 配置位于根目录下 .stylelintrc.json

编辑器配合 ​

如果您使用的是 vscode 编辑器的话,只需要安装下面插件,即可在保存的时候自动格式化文件内部 css 样式

插件

StyleLint

Prettier ​

prettier 可以用于统一项目代码风格,统一的缩进,单双引号,尾逗号等等风格

配置 ​

prettier 配置文件位于项目根目录下 .prettierrc.json

编辑器配合 ​

如果您使用的是 vscode 编辑器的话,只需要安装下面插件,即可在保存的时候自动格式化文件内部 js 格式

插件

Prettier

Git Hook ​

git hook 一般结合各种 lint,在 git 提交代码的时候进行代码风格校验,如果校验没通过,则不会进行提交。需要开发者自行修改后再次进行提交

husky ​

有一个问题就是校验会校验全部代码,但是我们只想校验我们自己提交的代码,这个时候就可以使用 husky。

最有效的解决方案就是将 Lint 校验放到本地,常见做法是使用 husky 或者 pre-commit 在本地提交之前先做一次 Lint 校验。

项目在 .husky 内部定义了相应的 hooks

如何跳过某一个检查 ​

bash
# 加上 --no-verify即可跳过git hook校验(--no-verify 简写为 -n)
git commit -m "xxx" --no-verify

lint-staged ​

用于自动修复提交文件风格问题

lint-staged 配置位于项目根目录下 .lintstagedrc

js
{
  "*.{js,jsx,ts,tsx}": ["eslint", "prettier --write"],
  "*.vue": ["prettier --write", "stylelint --fix"],
  "package.json": ["prettier --write"],
  "{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": ["prettier --parser json --write"],
  "*.{scss,less,styl,css,html}": ["stylelint --fix", "prettier --write"],
  "**/node_modules/**": []
}