介绍
https://eslint.nodejs.cn/
eslint是一个代码质量检测的包。
javascript standard style https://standardjs.com/readme-zhcn.html
ESLint 规则表 https://zh-hans.eslint.org/docs/latest/rules/
创建Vue时引入了
如果使用像
的命令选择引入eslint后,项目中dev依赖就有eslint相关的包了。
现在项目(带pakcage.json文件)
安装eslint包
1
| npm install --save-dev eslint @eslint/js
|
添加配置文件(eslint.config.js)
修改eslint.config.js
1 2 3 4 5 6 7 8 9 10 11 12
| import js from "@eslint/js";
export default [ js.configs.recommended,
{ rules: { "no-unused-vars": "warn", "no-undef": "warn" } } ];
|
使用 ESLint CLI 进行代码检查
在main.js中添加 const a = {};
再执行,发现提示
1 2 3
| 15:7 warning 'a' is assigned a value but never used no-unused-vars
✖ 1 problem (0 errors, 1 warning)
|
1 2 3
| npx是Node.js中的一个命令行工具,它主要用于执行npm包中提供的可执行文件。 1.无需全局安装 2.自动下载并运行
|
vscode中eslint插件
Vscode安装eslint插件。
vscode在设置中搜索框中输入 eslint, eslint: enable ; 应该安装上就配置好了,不需要配置。
安装插件后,打开项目,项目依赖有eslint, 并且有eslint.config.js 或者 .eslintrc.cjs,这时候应该就会自动检测项目里的代码了。
网上说在vscode的首选项-》配置文件-》 新增eslint的配置文件,这是一种全局配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| "eslint.autoFixOnSave": true, "eslint.validate": [ "javascript", "javascriptreact", "html", { "language": "html", "autoFix": true }, { "language": "vue", "autoFix": true } ]
|
autoFix 设置为 true 时,在vscode按下保存键时 ctrl+s 会自动为我们格式化代码。
我感觉还是应该使用项目里的配置这样跟随着源码。
pnpm创建vue项目中eslint的默认配置解析
.eslintrc.cjs文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
require('@rushstack/eslint-patch/modern-module-resolution')
module.exports = { root: true, 'extends': [ 'plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-prettier/skip-formatting' ], parserOptions: { ecmaVersion: 'latest' } }
|
vscode 配置
vscode打开一个项目后,会在项目目录下创建一个.vscode的目录,会有一个settings.json文件。
1 2 3 4 5 6 7
| { "editor.codeActionsOnSave": { "source.fixAll": "explicit" }, "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }
|
1 2 3 4 5 6
| "source.fixAll": "true"
"editor.formatOnSave": true,
|
一些额外的.eslintrc.cjs配置
1 2 3 4 5 6 7 8 9
| module.exports = { rules: { 'no-undef': 'error' } }
|
Rules还可以添加,但是还是看需求,别错误使用还被忽略了。
1 2 3 4 5 6 7 8 9 10 11
| rules: { 'vue/multi-word-component-names': [ 'warn', { ignores: ['index'] } ], 'vue/no-setup-props-destructure': ['off'], }
|
添加pettier格式化规则
1 2 3 4 5 6 7 8 9 10 11 12
| rules: { 'prettier/prettier': [ 'warn', { singleQuote: true, semi: false, printWidth: 80, trailingComma: 'none', endOfLine: 'auto' } ] }
|
vscode 关闭保存后格式化:
1
| "editor.formatOnSave": false,
|