一、安装eslint相关依赖
`npm install eslint eslint-config-airbnb-base babel-eslint eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-html --save-dev`
二、配置eslint文件
放在项目根目录下
.eslintrc.js文件配置信息
module.exports = {
env: {
browser: true,
node: true,
es6: true,
},
plugins: [
'react',
'react-hooks',
],
parser: 'babel-eslint', // include eslint-plugin-import
parserOptions: {
ecmaVersion: 7,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
modules: true,
}
},
extends: 'airbnb-base',
rules: {
// off
'no-use-before-define': 0,
'no-console': 0,
'no-alert': 0,
'no-plusplus': 0,
'no-unused-expressions': 0,
'func-names': 0,
'eqeqeq': 0,
'no-underscore-dangle': 0,
'no-param-reassign': 0,
'no-new': 0,
'import/no-unresolved': 0,
'import/no-extraneous-dependencies': 0,
'linebreak-style': 0,
'no-nested-ternary': 0,
'arrow-body-style': 0,
'prefer-const': 0,
// warn
'import/prefer-default-export': 1,
'no-unused-vars': 1,
// error
indent: [2, 4, {
SwitchCase: 1,
VariableDeclarator: 1,
outerIIFEBody: 1,
FunctionDeclaration: {
parameters: 1,
body: 1,
},
FunctionExpression: {
parameters: 1,
body: 1,
},
}],
'space-before-function-paren': [2, 'never'],
'wrap-iife': [2, 'inside', { functionPrototypeMethods: true }],
'max-len': [2, 120, 4, {
ignoreUrls: true,
ignoreComments: false,
ignoreRegExpLiterals: true,
ignoreStrings: true,
ignoreTemplateLiterals: true,
}],
// react
'react/jsx-uses-react': 2,
'react/jsx-uses-vars': 2,
'react-hooks/rules-of-hooks': 2,
// 使用后会添加不希望出现的变量到依赖
// 'react-hooks/exhaustive-deps': 1,
// no debugger
'no-debugger': 2,
}
};
.eslintignore文件配置信息
dist/*
**/node_modules/*
三、添加vscode设置
vscode安装插件eslint
ctrl+P输入setting,打开setting.json
添加以下参数
{
// vscode默认启用了根据文件类型自动设置tabsize的选项
"editor.detectIndentation": false,
// 重新设定tabsize
"editor.tabSize": 4,
// #每次保存的时候自动格式化
"editor.formatOnSave": true,
// #每次保存的时候将代码按eslint格式进行修复
"eslint.autoFixOnSave": true,
// 添加 vue 支持
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "vue",
"autoFix": true
}
],
// #让prettier使用eslint的代码格式进行校验
"prettier.eslintIntegration": true,
// #去掉代码结尾的分号
"prettier.semi": false,
// #使用带引号替代双引号
"prettier.singleQuote": true,
// #让函数(名)和后面的括号之间加个空格
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
// #这个按用户自身习惯选择
"vetur.format.defaultFormatter.html": "js-beautify-html",
// #让vue中的js按编辑器自带的ts格式进行格式化
"vetur.format.defaultFormatter.js": "vscode-typescript",
"vetur.format.defaultFormatterOptions": {
"js-beautify-html": {
"wrap_attributes": "force-aligned"
// #vue组件中html代码格式化样式
}
},
// 格式化stylus, 需安装Manta's Stylus Supremacy插件
"stylusSupremacy.insertColons": false, // 是否插入冒号
"stylusSupremacy.insertSemicolons": false, // 是否插入分好
"stylusSupremacy.insertBraces": false, // 是否插入大括号
"stylusSupremacy.insertNewLineAroundImports": false, // import之后是否换行
"stylusSupremacy.insertNewLineAroundBlocks": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"files.autoSave": "off" // 两个选择器中是否换行
}
四、重启vscode
重启vscode之后,测试保存有没有自动格式化。如果提示配置冲突,选yes就行