安装与配置 eslint
- 1 安装 eslint @babel/eslint-parser
- 2 初始化配置 eslint
- 3 安装 vite-plugin-eslint
- 4 配置 vite.config.js 文件
- 5 修改 eslint 默认配置
1 安装 eslint @babel/eslint-parser
npm i -D eslint @babel/eslint-parser
2 初始化配置 eslint
npx eslint --init
相关的配置设置根据实际情况选择即可
配置完成会自动安装相关依赖并生成 .eslintrc.cjs
文件
module.exports = {'env': {'browser': true,'es2021': true},'extends': ['eslint:recommended','plugin:react/recommended'],'overrides': [{'env': {'node': true},'files': ['.eslintrc.{js,cjs}'],'parserOptions': {'sourceType': 'script'}}],'parserOptions': {'ecmaVersion': 'latest','sourceType': 'module'},'plugins': ['react'],'rules': {},
};
3 安装 vite-plugin-eslint
npm i -D vite-plugin-eslint
4 配置 vite.config.js 文件
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import eslintPlugin from 'vite-plugin-eslint'export default defineConfig({plugins: [react(),// 添加 eslint 插件配置eslintPlugin({include: ['src/**/*.js', 'src/**/*.jsx', 'src/*.js', 'src/*.jsx']})],resolve: {alias: {},},
})
5 修改 eslint 默认配置
可根据实际情况进行配置。
module.exports = {'env': {'browser': true,'es2021': true},'extends': ['eslint:recommended','plugin:react/recommended'],'overrides': [{'env': {'node': true},'files': ['.eslintrc.{js,cjs}'],'parserOptions': {'sourceType': 'script'}}],'parserOptions': {'ecmaVersion': 'latest','sourceType': 'module'},'plugins': ['react'],'rules': {'indent': [2,2,{'SwitchCase': 1,'ignoredNodes': ['TemplateLiteral']}], //缩进'no-unused-vars': [0], //未使用变量'quotes': [2, 'single'], //单引号'jsx-quotes': ['error', 'prefer-single'],'no-console': [0, { 'allow': ['warn', 'error'] }], //console'linebreak-style': [0, 'unix'], //强制执行统一的行结尾'semi': [2, 'always'], //分号结尾'curly': 2,'no-eval': 1, //禁止使用eval'no-caller': 2,'no-else-return': 2, //如果if语句里面有return,后面不能跟else语句'no-extend-native': 2, //禁止扩展native对象'no-extra-bind': 2, //禁止不必要的函数绑定'no-floating-decimal': 2, //禁止省略浮点数中的0'no-implied-eval': 2, //禁止使用隐式eval'no-labels': 2, //禁止标签声明'no-with': 2, //禁用with'no-loop-func': 0, //禁止在循环中使用函数(如果没有引用外部变量不形成闭包就可以)'no-native-reassign': 2, //不能重写native对象'no-redeclare': [2], //禁止重复声明变量'no-unused-expressions': 0, //禁止无用的表达式'no-unneeded-ternary': 2, //禁止不必要的嵌套'no-use-before-define': 0, //未定义前不能使用'no-unreachable': 2, //不能有无法执行的代码'no-trailing-spaces': 1, //一行结束后面不要有空格'no-dupe-keys': 2, //在创建对象字面量时不允许键重复 {a:1,a:1}'no-dupe-args': 2, //函数参数不能重复'no-duplicate-case': 2, //switch中的case标签不能重复'array-bracket-spacing': [2, 'never'], //是否允许非空数组里面有多余的空格'arrow-body-style': [1],'no-undef-init': 0,'no-undefined': 0,'key-spacing': [//对象字面量中冒号的前后空格2,{'beforeColon': false,'afterColon': true}],'no-lonely-if': 2, //禁止else语句内只有if语句'no-inner-declarations': [2, 'functions'], //禁止在块语句中使用声明(变量或函数)'no-spaced-func': 2, //函数调用时 函数名与()之间不能有空格'no-case-declarations': [0],'no-multiple-empty-lines': [1, { 'max': 2 }], //空行最多不能超过2行'space-in-parens': [2, 'never'], //小括号里面要不要有空格'no-multi-spaces': [2], //不能用多余的空格'no-irregular-whitespace': 2,//不能有不规则的空格'react/prop-types': [0],'react/display-name': [0],'react/no-string-refs': [0],'react/jsx-no-comment-textnodes': [0],'react/no-unescaped-entities': [0]},
};