module.exports = {
// 环境
env: {
browser: true,
// es2021: true,
es6: true,
commonjs: true,
node: true,
},
// 配置解析器
parserOptions: {
ecmaVersion: 12,
parser: 'babel-eslint',
},
// 配置扩展
extends: [
// eslint推荐规则
'eslint:recommended',
// 标准js规则
'standard',
// vue eslint 基本规则
'plugin:vue/base',
// Vue eslint A级推荐规则预设
'plugin:vue/essential',
// Vue eslint B级推荐规则预设
'plugin:vue/strongly-recommended',
// Vue eslint C级推荐规则预设
'plugin:vue/recommended',
],
// 允许的全局变量预设
globals: {
// 如 lodash
_: true,
},
// 这里可以设置规则:
// "off" or 0 - 关闭规则
// "warn" or 1 - 将规则作为警告打开(不影响退出代码)
// "error" or 2 - 将规则作为错误打开(退出代码为1)
rules: {
'vue/max-attributes-per-line': [
'error',
{
singleline: 3,
multiline: {
max: 1,
allowFirstLine: false,
},
},
],
}
}
注意选择stylelint @13.13.1,14版本需要postcss 等依赖,以下配置无法直接生效
module.exports = {
extends: [
'stylelint-config-standard',
'stylelint-config-standard-scss',
'stylelint-config-idiomatic-order',
],
plugins: ['stylelint-order'],
rules: {
indentation: 2,
'unit-case': null,
'no-empty-source': null,
// 如果是小程序允许rpx
// 'unit-no-unknown': [true, { ignoreUnits: ['rpx'] }],
// 'selector-type-no-unknown': [true, { ignoreTypes: ['page'] }],
'property-no-vendor-prefix': [
true,
{ ignoreProperties: ['background-clip'] },
],
'number-leading-zero': 'never',
},
}
module.exports = {
printWidth: 80, // 超过最大值换行
tabWidth: 2, // 缩进字节数
useTabs: false, // 缩进不使用tab,使用空格
semi: false, // 句尾添加分号
singleQuote: true, // 使用单引号代替双引号
proseWrap: 'preserve', // 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行
arrowParens: 'avoid', // (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号
bracketSpacing: true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }"
endOfLine: 'auto', // 结尾是 \n \r \n\r auto
htmlWhitespaceSensitivity: 'ignore',
ignorePath: '.prettierignore', // 不使用prettier格式化的文件填写在项目的.prettierignore文件中
jsxBracketSameLine: false, // 在jsx中把'>' 是否单独放一行
jsxSingleQuote: false, // 在jsx中使用单引号代替双引号
requireConfig: false, // Require a 'prettierconfig' to format prettier
trailingComma: 'all', // 在对象或数组最后一个元素后面是否加逗号(在ES5中加尾逗号)
}
{
"editor.tabSize": 2,
// 自动修复所有文件
"editor.codeActionsOnSave": {
"source.fixAll": true
},
// 格式化工具
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
// 文件关联
"files.associations": {
"*.cjson": "jsonc"
},
(启用正确的ESLint解析)
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/base"
}
Rule ID | Description 描述 |
---|---|
vue/comment-directive | 支持< template >中的注释指令 |
vue/experimental-script-setup-vars | 防止在< script setup >中定义的变量被标记为未定义 |
vue/jsx-uses-vars | 防止JSX中使用的变量被标记为未使用 |
(错误预防)for Vue.js 3.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/vue3-essential"
}
(提高可读性)for Vue.js 3.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/vue3-strongly-recommended"
}
(尽量减少任意选择和认知开销)for Vue.js 3.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/vue3-recommended"
}
Rule ID | Description | fix |
---|---|---|
vue/attributes-order | 强制属性的顺序 | |
vue/component-tags-order | 强制组件顶层元素的顺序 | |
vue/no-lone-template | 禁止不必要的< template > | |
vue/no-multiple-slot-args | 不允许向范围限定的槽传递多个参数 | |
vue/no-v-html | 不允许使用v-html来防止跨站攻击XSS | |
vue/order-in-components | 强制组件中的属性顺序 | |
vue/this-in-template | 不允许在模板中使用this |
(错误预防)for Vue.js 2.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/essential"
}
(提高可读性)for Vue.js 2.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/strongly-recommended"
}
Rule ID | Description | fix |
---|---|---|
vue/attribute-hyphenation | 在模板中的自定义组件上执行属性命名样式 | |
vue/component-definition-name-casing | 为组件定义名称执行特定的name | |
vue/html-closing-bracket-newline | 要求或不允许在标记的结束括号之前有换行符 | |
vue/html-closing-bracket-spacing | 要求或不允许在标签的右括号前加空格 | |
vue/html-end-tags | 加强结束标签样式 | |
vue/html-indent | 在< template >中执行一致的缩进 | |
vue/html-quotes | 强制HTML属性的引号样式 | |
vue/html-self-closing | 执行自闭的风格 | |
vue/max-attributes-per-line | 强制执行每行的最大属性数 | |
vue/multiline-html-element-content-newline | 在多行元素的内容之前和之后需要换行 | |
vue/mustache-interpolation-spacing | 在inner插值中加强统一的间距 | |
vue/no-multi-spaces | 不允许多个空格 | |
vue/no-spaces-around-equal-signs-in-attribute | 不允许在属性的等号周围有空格 | |
vue/no-template-shadow | 不允许对在外部范围中声明的变量进行隐藏 | |
vue/one-component-per-file | 强制每个组件都应该在自己的文件中 | |
vue/prop-name-casing | 在Vue组件中为道具名称执行特定的name | |
vue/require-default-prop | props需要默认值 | |
vue/require-prop-types | 需要在props中定义类型 | |
vue/singleline-html-element-content-newline | 在单行元素的内容之前和之后需要换行 | |
vue/v-bind-style | 执行v-bind指令样式 | |
vue/v-on-style | 执行v-on指令样式 | |
vue/v-slot-style | 强制v-槽指令样式 | |
(尽量减少任意选择和认知开销)for Vue.js 2.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/recommended"
}
Rule ID | Description | fix |
---|---|---|
vue/attributes-order | 强制属性的顺序 | |
vue/component-tags-order | 强制组件顶层元素的顺序 | |
vue/no-lone-template | 不允许不必要的< template > | |
vue/no-multiple-slot-args | 不允许向范围限定的槽传递多个参数 | |
vue/no-v-html | 不允许使用v-html来防止跨站攻击 | |
vue/order-in-components | 强制组件中的属性顺序强制组件中的属性顺序 | |
vue/this-in-template | 不允许在模板中使用this |
没有预设可启用此类别中的规则。如果你想,请启用每个规则。
For example::
{
"rules": {
"vue/block-tag-newline": "error"
}
}
下面的扩展规则为ESLint本身提供的规则,并将它们应用于 < template >.
Rule ID | Description | fix |
---|---|---|
vue/array-bracket-newline | 在开始和结束数组方括号之前强制执行换行符 | | |
vue/array-bracket-spacing | 在数组括号内强制执行一致的间距 | | |
vue/arrow-spacing | 在箭头函数中,在箭头之前和之后执行一致的间距 | | |
vue/block-spacing | 在打开块之后和关闭块之前,不允许或强制执行块内部的空格 | | |
vue/brace-style | 为块执行一致的大括号样式 | | |
vue/camelcase | 执行camelcase命名约定 | |
vue/comma-dangle | 要求或不允许尾部逗号 | | |
vue/comma-spacing | 在逗号之前和之后执行一致的间隔 | | |
vue/comma-style | 加强一致的逗号样式 | | |
vue/dot-location | 在点之前和之后执行一致的换行 | | |
vue/dot-notation | 尽可能执行点表示法 | | |
vue/eqeqeq | 需要使用=和! | | |
vue/func-call-spacing | 要求或不允许函数标识符与其调用之间存在间隔 | | |
vue/key-spacing | 在对象文字属性中强制键和值之间保持一致的间距 | | |
vue/keyword-spacing | 在关键字之前和之后执行一致的间距 | | |
vue/max-len | 强制执行最大行长度 | |
vue/no-empty-pattern | disallow empty destructuring patterns | |
vue/no-extra-parens | disallow unnecessary parentheses | | |
vue/no-irregular-whitespace | 不允许不规则的空白 | |
vue/no-restricted-syntax | 不允许指定的语法 | |
vue/no-sparse-arrays | 不允许稀疏阵列 | |
vue/no-useless-concat | 不允许不必要的文字或模板文字的连接 | |
vue/object-curly-newline | 在大括号内强制执行一致的换行符 | | |
vue/object-curly-spacing | 在大括号内加强一致的间距 | | |
vue/object-property-newline | 强制将对象属性放置在单独的行上 | | |
vue/operator-linebreak | 为操作符强制一致的换行样式 | | |
vue/prefer-template | 需要模板文字,而不是字符串连接 | | |
vue/space-in-parens | 强制括号内的间隔一致 | | |
vue/space-infix-ops | 需要在中缀操作符周围设置空格 | | |
vue/space-unary-ops | 在一元运算符之前或之后执行一致的间距 | | |
vue/template-curly-spacing | 要求或不允许在模板字符串的嵌入表达式周围设置间距 | |