ESLint + Prettier + husky + lint-staged
on Dev-Tool
安装
npm i eslint -D
npm i eslint-config-prettier -D
npm i eslint-config-standard -D
npm i eslint-friendly-formatter -D
npm i eslint-loader -D
npm i eslint-plugin-html -D
npm i eslint-plugin-import -D
npm i eslint-plugin-node -D
npm i eslint-plugin-prettier -D
npm i eslint-plugin-promise -D
npm i eslint-plugin-standard -D
npm i husky -D
npm i lint-staged -D
npm i prettier -D
配置
以下的每一个配置都是最基础的配置,应该可以适用于小型项目,如果需要扩展,请查阅各个工具包的官方文档。
package.json
husky
负责各种 git hook
。这里主要用到 pre-commit
这个 hook
,在执行 commit
之前,运行 lint-staged
。
lint-staged
用于对 git
暂存区中的文件执行代码检测。
**/*.js
,表示在 git add
操作之前,对暂存区中所有 .js
文件依次执行 prettier --write
和 eslint --fix
操作。
**/*.{html,json,md}
,表示在 git add
操作之前,对暂存区中所有 .html
, .json
, .md
文件依次执行 prettier --write
操作。这里没有 eslint --fix
操作是因为 eslint
只对 .js
文件和 .html
文件中的 <script></script>
部分有效。
在 package.json
中添加如下的配置,并根据需要酌情调整:
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"**/*.js": [
"prettier --write",
"eslint --fix",
"git add"
],
"**/*.{html,json,md}": [
"prettier --write",
"git add"
]
},
.eslintrc.js
在项目根目录下添加 .eslintrc.js
文件,并根据需要酌情调整:
module.exports = {
env: {
browser: true,
es6: true,
node: true
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module'
},
extends: [
'standard',
'plugin:prettier/recommended'
],
plugins: [
'html',
'prettier'
],
rules: {
'prettier/prettier': 'error',
'no-use-before-define': 'error'
}
};
.prettierrc.js
在项目根目录下添加 .prettierrc.js
文件,并根据需要酌情调整:
module.exports = {
printWidth: 150, // 一行的字符数,如果超过会进行换行
tabWidth: 4, // 一个 tab 代表几个空格数
singleQuote: true // 字符串是否使用单引号
};
webpack.config.base.js
这里主要是通过使用 eslint-loader
可以对正在编辑的 .js
文件和 .html
文件中的 <script></script>
部分实时检测。
将以下配置添加在 webpack
配置 rules
的部分,并根据需要酌情调整:
{
test: /\.(js|html)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [path.resolve(__dirname, 'src/pages/component')],
options: {
formatter: require('eslint-friendly-formatter'), // 友好的提示方式
fix: true // 有问题直接修复
}
}