me

ESLint


以下以 nuxt3 集成 ESlint 举例

初始化 ESlint

module.exports = {
  "env": {
    "browser": true,
    "es2021": true,
  },
  "extends": [
    "eslint:recommended",
    "plugin:vue/essential",
    "plugin:@typescript-eslint/recommended",
  ],
  "parserOptions": {
    "ecmaVersion": "latest",
    "parser": "@typescript-eslint/parser",
    "sourceType": "module",
  },
  "plugins": [
    "vue",
    "@typescript-eslint",
  ],
  "rules": {},
};

extends

extends 的模块名称以 eslint-config- 开头,例如 eslint-config-myconfig。同时支持 npm 作用域模块,例如 :@scope/eslint-config。使用的时候可以用全称,也可以用缩写 (不使用eslint-config-)

例如上面配置文件,extends 中 "plugin:@typescript-eslint/recommended",这个就是插件中的配置

plugin

每个插件是一个命名格式为 eslint-plugin-<plugin-name> ,比如 eslint-plugin-vue。你也可以用这样的格式 @<scope>/eslint-plugin-<plugin-name> 限定在包作用域下,比如 @vue/eslint-plugin-vue。同样可以使用缩写

例如上面配置文件中,plugins 中的"vue",这个就是简写的插件

rules

可以做下面的任何事情以扩展(或覆盖)规则

开启 "eslint:recommended"

值为 eslint:recommended 的 extends 属性启用一系列核心规则,这些规则报告一些常见问题

如果配置集成了推荐的规则:在使用命令行的 --fix 选项之前,检查一下报告的问题,这样就可以知道一个新的可修复的推荐的规则将更改代码

extends 和 plugins 的区别

在 extends 中使用plugins 插件

parserOptions

参考https://eslint.bootcss.com/docs/user-guide/configuring

修改支持 vue3

参考https://eslint.vuejs.org/user-guide/#usage

ESlint 命令行参数

首先在脚本中配置 eslint 检查

scripts:{
  // npx 会自动执行脚本,不需要加上 npx
  "lint": "eslint . --ext .ts,.vue"
}
  • 语法:eslint [options] [file|dir|glob]*
  • 常用命令行参数,通过 npx eslint --help 来输出所有选项参数

.eslintignore 文件:eslint 会忽略当前目录下的这些文件。

/dist/*
.local
.output.js
/node_modules/**
**/*.svg
**/*.sh
/public/*

prettier 和 husky

module.exports={
  "extends":[
  ...,
  // 用 eslint-config-prettier
  'plugin:prettier/recommended'
  ],
  plugin:["prettier"]// 避免与 prettier 冲突
}

配置 .prettierrc 文件,同时也可以添加 .prettierignore 文件来忽略不想要检查的文件

{
  printWidth: 80, //单行长度
  tabWidth: 2, //缩进长度,不管是空格还是 Tab
  useTabs: false, //使用空格代替 tab 缩进
  semi: true, //句末使用分号
  singleQuote: true, //使用单引号
  quoteProps: 'as-needed', //仅在必需时为对象的 key 添加引号
  jsxSingleQuote: true, // jsx 中使用单引号
  trailingComma: 'all', //多行时尽可能打印尾随逗号
  bracketSpacing: true, //在对象前后添加空格-eg: { foo: bar }
  jsxBracketSameLine: true, //多属性 html 标签的‘>’折行放置
  arrowParens: 'always', //单参数箭头函数参数周围使用圆括号-eg: (x) => x
  requirePragma: false, //无需顶部注释即可格式化
  insertPragma: false, //在已被 preitter 格式化的文件顶部加上标注
  proseWrap: 'preserve', //不知道怎么翻译
  htmlWhitespaceSensitivity: 'ignore', //对 HTML 全局空白不敏感
  vueIndentScriptAndStyle: false, //不对 vue 中的 script 及 style 标签缩进
  endOfLine: 'lf', //结束行形式
  embeddedLanguageFormatting: 'auto', //对引用代码进行格式化
}

husky

线初始化 husky:git husky install

Lint-staged

此命令将根据项目依赖项中的代码质量工具安装和配置 husky 和 `lint-staged package.json,因此请确保在此之前安装 npm install --save-dev 并配置所有代码质量工具,如 Prettier 和 ESLint