项目规范工具的使用
JavaScript 项目
在 JavaScript 项目中,我将使用以下工具进行项目的规范化:
- ESLint —— 检查代码质量;
- Prettier —— 检查代码风格;
- Husky —— 配置 git hooks;
- lint-staged —— 在 staged 文件上运行 linters;
- commitlint —— 规范化 commit message。
配置 ESLint
首先,我们按照 ESLint 文档中所描述的那样安装并配置 ESLint。
在执行初始化命令之后,会出现如下提示,你只需要根据自身选择即可:

命令执行完毕之后会创建如下配置文件:
js
import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
export default [
{ languageOptions: { globals: { ...globals.browser, ...globals.node } } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
...pluginVue.configs['flat/recommended'],
]配置智能提示
我们可以安装 @types/eslint,并且通过 IDE 和 jsdoc 的配合来实现智能提示:
js
import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
/** @type {import('@types/eslint').Linter.FlatConfig} */
export default [
{ languageOptions: { globals: { ...globals.browser, ...globals.node } } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
...pluginVue.configs['flat/recommended'],
]配置 rules
js
import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
/** @type {import('@types/eslint').Linter.FlatConfig} */
export default [
{ languageOptions: { globals: { ...globals.browser, ...globals.node } } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
...pluginVue.configs['flat/recommended'],
{
rules: {
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'no-undef': 'off',
'vue/multi-word-component-names': 'off',
},
},
]集成
请参考文档。
配置 Prettier
该节参考 prettier install 文档。
- 运行以下命令安装 prettier:
sh
npm i -D prettiersh
yarn add -D prettiersh
pnpm add -D prettier- 创建配置文件:
json
{
"singleQuote": true,
"semi": false
}# Ignore artifacts:
dist/
node_modules/如果没有 .prettierignore 文件但是相同目录下存在 .gitignore 文件,prettier 会遵循 .gitignore 定义的规则。
集成
与编辑器集成请参考该文档。
WARNING
需要注意,如果你是使用 VSCode,并且在使用 prettier 扩展时出现问题的话,请尝试重新加载 VSCode 窗口,这可能会解决你遇到的问题。
如果你是搭配 eslint 一起使用的话,需要安装 eslint-config-prettier,这个包是用来关闭与 prettier 冲突的 eslint 规则的。
sh
npm i -D eslint-config-prettiersh
yarn add -D eslint-config-prettiersh
pnpm add -D eslint-config-prettier然后修改 eslint 配置文件,prettier 配置对象需要放置在数组中合适的位置以覆盖其它规则:
js
import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import eslintConfigPrettier from 'eslint-config-prettier'
/** @type {import('@types/eslint').Linter.FlatConfig} */
export default [
{ languageOptions: { globals: { ...globals.browser, ...globals.node } } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
...pluginVue.configs['flat/recommended'],
eslintConfigPrettier,
{
rules: {
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'no-undef': 'off',
'vue/multi-word-component-names': 'off',
},
},
]配置 Husky
请参考该文档进行安装和初始化。
配置 lint-staged
- 安装 lint-staged
sh
npm i -D lint-stagedsh
yarn add -D lint-stagedsh
pnpm add -D lint-staged- 设置
pre-commitgit hook 以运行lint-staged
sh
echo "npx lint-staged" > .husky/pre-commitsh
echo "yarn dlx lint-staged" > .husky/pre-commitsh
echo "pnpm lint-staged" > .husky/pre-commit- 在
package.json中配置lint-staged如下
json
{
"lint-staged": {
"*.{js,ts,vue,tsx}": "eslint --cache --fix",
"*.{js,css,md,ts,vue,tsx}": "prettier --write"
}
}配置 commitlint
该节参考文档。
- 安装 commitlint
sh
npm i -D @commitlint/cli @commitlint/config-conventionalsh
yarn add -D @commitlint/cli @commitlint/config-conventionalsh
pnpm add -D @commitlint/cli @commitlint/config-conventional- 创建配置文件
commitlint.config.ts,内容如下
ts
import { type UserConfig } from '@commitlint/types'
export default {
extends: ['@commitlint/config-conventional'],
} as UserConfig需要注意,如果你使用 pnpm 安装依赖,你需要把 @commitlint/types 进行提升。
public-hoist-pattern[]=@commitlint/types- 设置
commit-msggit hook 以运行commitlint
sh
echo 'npx --no -- commitlint --edit $1' > .husky/commit-msgsh
echo 'yarn dlx commitlint --edit $1' > .husky/commit-msgsh
echo 'pnpm commitlint --edit $1' > .husky/commit-msg额外的,你可以使用 prompt 来快速编写符合 commit 规范的 commit message。