赞
踩
ESLint 是一个静态代码分析工具,用于检查 JavaScript 代码的语法结构和查找程序错误。
安装:通过 npm 安装 ESLint 。
配置:创建 .eslintrc.js 配置文件,启用想要的规则。
检查:在命令行直接运行 ESLint,或在编辑器中集成 ESLint 。
修复:ESLint 可以自动修复一些问题,运行 eslint --fix 修复代码。
忽略文件:通过 .eslintignore 忽略不需要检查的文件。
Prettier 是一个代码格式化工具,支持 JavaScript, TypeScript, CSS, HTML, JSON, GraphQL, Markdown 等各种语言。
pnpm i -D eslint
如询问
# 生成配置文件:.eslintrc.js
npx eslint --init
PS D:\MyResearch\vue-admin\my-vue-ts> npx eslint --init
You can also run this command directly using 'npm init @eslint/config'.
√ How would you like to use ESLint? · problems
√ What type of modules does your project use? · esm
√ Which framework does your project use? · vue
√ Does your project use TypeScript? · No / Yes
√ Where does your code run? · browser
√ What format do you want your config file to be in? · JavaScript
The config that you've selected requires the following dependencies:
eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest
√ Would you like to install them now? · No / Yes
√ Which package manager do you want to use? · pnpm
package.json
文件{
"name": "my-vue-ts",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.2.47"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"@vitejs/plugin-vue": "^4.1.0",
"eslint": "^8.39.0",
"eslint-plugin-vue": "^9.11.0",
"typescript": "^5.0.2",
"vite": "^4.3.2",
"vue-tsc": "^1.4.2"
}
}
.eslintrc.cjs
文件与文件
.eslintrc.js
无区别!如果你的项目使用:
- ES6 的 import / export,推荐使用 .eslintrc.js
- Require() 函数加载,推荐使用 .eslintrc.cjs
module.exports = {
"env": {
"browser": true,
"node": true,
"es2021": true,
},
"extends": [
"eslint:recommended",
"plugin:vue/vue3-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
"eslint-config-prettier",
],
"overrides": [],
"parser": "vue-eslint-parser",
"parserOptions": {
"ecmaVersion": "latest",
"parser": "@typescript-eslint/parser",
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
},
"plugins": [
"vue",
"@typescript-eslint",
"prettier",
],
// 更多 rules :https://eslint.org/docs/latest/rules/
"rules": {
// 禁用vue文件强制多个单词命名
"vue/multi-word-component-names": "off",
// 允许使用any
"@typescript-eslint/no-explicit-any": ["off"],
"@typescript-eslint/no-this-alias": [
"error",
{
// this 可用的局部变量名称
"allowedNames": ["that"]
}
],
// 允许使用@ts-ignore
"@typescript-eslint/ban-ts-comment": "off",
// 允许使用非空断言
"@typescript-eslint/no-non-null-assertion": "off",
"no-console": [
// 提交时不允许有console.log
"warn",
{
"allow": ["warn", "error"]
}
],
// 提交时不允许有debugger
"no-debugger": "warn"
}
}
.eslintignore
文件# 静态资源目录,无需lint
public
# 第三方依赖,无需lint
node_modules
# 构建输出目录,无需lint
dist
package.json
中添加运行脚本"scripts": {
"lint": "eslint src --fix --ext .ts,.tsx,.vue,.js,.jsx --max-warnings 0"
}
pnpm install -D prettier eslint-config-prettier eslint-plugin-prettier
devDependencies:
+ eslint-config-prettier 8.8.0
+ eslint-plugin-prettier 4.2.1
+ prettier 2.8.8
.prettierrc.cjs
文件module.exports = {
// 一行的字符数,如果超过会进行换行,默认为80
printWidth: 80,
// 一个tab代表几个空格数,默认为80
tabWidth: 2,
// 是否使用tab进行缩进,默认为false,表示用空格进行缩减
useTabs: false,
// 字符串是否使用单引号,默认为false,使用双引号
singleQuote: true,
// 行位是否使用分号,默认为 true
semi: true,
// 是否使用尾逗号,有三个可选值"<none|es5|all>"
trailingComma: 'all',
// 对象大括号直接是否有空格,默认为true,效果:{ foo: bar }
bracketSpacing: true,
// 指定在格式化代码时要使用的行尾样式,默认为"lf",可选值"<lf|crlf|cr|auto>"
/**
* 不同操作系统上的行尾可能不同。例如,Windows 使用回车符后跟换行符 ("\r\n") 作为行尾,
* 而基于 Unix 的系统如 macOS 和 Linux 只使用换行符 ("\n")。通过使用 "auto",
* Prettier 将自动检测输入文件中使用的行尾样式,并在输出中保留它。
*/
endOfLine: "auto"
}
.prettierignore
文件# 静态资源目录,无需lint
public
# 第三方依赖,无需lint
node_modules
# 构建输出目录,无需lint
dist
npx eslint --init
选项详解你想如何使用ESLint?
你的项目使用什么类型的模块系统?
JavaScript modules (import/export) - 使用 ES6 中的导入导出模块(推荐);
CommonJS (require/exports) - 使用 CommonJS 规范中的 require/exports 模块;
None of these - 不使用任何模块系统。
ES6 是 JavaScript 的最新标准,模块系统是其中重要的一部分,可以让我们以清晰的方式组织和重用代码。
比 require/exports 更加现代和强大,静态化可以优化依赖解析,Tree Shaking 可以减少打包体积。
现代框架(如Vue)和打包工具(如webpack)大都内置对 ES6 模块的支持,这样选项会更加顺手。
未来的 JavaScript 会越来越支持 ES6 及以上新标准,选择 ES6 模块有助于项目更好地迈向未来。
你的项目使用哪个框架?
你的项目使用 TypeScript 吗?
你的代码将在什么环境运行?
Browser - 浏览器环境;
Node - Node.js环境。
你想要ESLint的配置文件采用什么格式?
The config that you’ve selected requires the following dependencies:
eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest
? Would you like to install them now? » No / Yes
根据前面的选择,需要安装三个 ESLint 插件来支持 Vue 和 TypeScript 的检测!
@antfu/eslint-config 大佬方案!
参考:https://github.com/antfu/eslint-config
pnpm add -D eslint @antfu/eslint-config
.eslintrc
{
// 扩展"@antfu"配置,这是一个共享配置,可以根据需要进行定制化
// https://github.com/antfu/eslint-config
"extends": "@antfu",
"rules": {
// 禁用"eslint-comments/no-unlimited-disable"规则,此规则用于限制禁用某些ESLint规则的注释
"eslint-comments/no-unlimited-disable": "off",
// 强制使用大括号包围所有控制语句
"curly": ["error", "all"],
// Vue组件标签的顺序要求
"vue/component-tags-order": ["error", {
"order": ["route", "script", "template", "style"]
}]
}
}
.eslintignore
dist
node_modules
项目的 .vscode
目录下setting.json
文件
{
"prettier.enable": false,
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": false
},
// The following is optional.
// It's better to put under project setting `.vscode/settings.json`
// to avoid conflicts with working with different eslint configs
// that does not support all formats.
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"html",
"markdown",
"json",
"jsonc",
"yaml"
]
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。