Eslint 可以提供代码检查,而 Prettier 能够统一团队代码风格,两者结合在一起会事半功倍。
npm install prettier babel-eslint eslint eslint-config-prettier eslint-plugin-flowtype eslint-plugin-prettier eslint-plugin-import --save-dev
- eslint-config-prettier 可以取消 eslint 和 prettier 冲突的配置项,采用 prettier 风格
- eslint-plugin-prettier 可以将 prettier 的格式化规则作为 eslint 的检查规则
新建 Eslint 和 Prettier 的配置件:
touch .eslintrc
touch .prettierrc
在.eslintrc 写入一下内容:
{
"parser": "babel-eslint",
"extends": [
"prettier",
"prettier/flowtype" // if you are using flow
],
"rules": {
"indent": ["error", 2],
"prettier/prettier": "error"
},
"plugins": [
/* Flow type linting rules for ESLint. */
"flowtype",
"prettier"
]
}
eslint 规则是完全可配置的,其级别为:
- "off" 或 0 - 关闭规则
- "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
- "error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)
更多配置项见 https://cn.eslint.org/docs/user-guide/configuring
在.prettierrc 写入以下内容:
{
"tabWidth": 2,
"singleQuote": true
}
更多配置项见 https://prettier.io/docs/en/configuration.html
例如,将以下配置加入配置文件:
{
"editor.formatOnSave": true,
"prettier.disableLanguages": ["js"],
"eslint.autoFixOnSave": true,
"eslint.alwaysShowStatus": true
}
- 由于 husky 在 .git/hooks 中写入了 pre-commit 钩子,该钩子在 git commit 执行时被触发
- lint-staged 利用配置的文件过滤路径,对暂存区文件一个个进行匹配,匹配成功时,运行 eslint –fix 并自动将修改添加到暂存区
yarn add precommit husky --dev
在 package.json 添加配置
"scripts": {
"precommit": "lint-staged" //husky 在 .git/hooks 中写入了 钩子
},
"lint-staged": {
"src/**/*.js": [
"prettier --write",
"git add"
]
},