Vue的ESLint-stylelint-prettier联合配置
Available rules 可用规则Base Rules 基本规则 (Enabling Correct ESLint Parsing) 启用正确的ESLint分析通过以下方式强制执行此类别中的所有规则以及所有优先级较高的规则:{"extends": "plugin:vue/base"}Rule IDDescription 描述vue/comment-directive支持< templa
·
.eslintrc.js 配置
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,
},
},
],
}
}
.stylelintrc.js 配置
注意选择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',
},
}
.prettierrc 配置
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中加尾逗号)
}
settings.json 配置
{
"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-plugin-vue 可用规则
Base Rules
(启用正确的ESLint解析)
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/base"
}
Rule ID | Description 描述 |
---|---|
vue/comment-directive | 支持< template >中的注释指令 |
vue/experimental-script-setup-vars | 防止在< script setup >中定义的变量被标记为未定义 |
vue/jsx-uses-vars | 防止JSX中使用的变量被标记为未使用 |
Priority A: Essential (Vue3.x)
(错误预防)for Vue.js 3.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/vue3-essential"
}
Priority B: Strongly Recommended (Vue3.x)
(提高可读性)for Vue.js 3.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/vue3-strongly-recommended"
}
Priority C: Recommended (Vue3.x)
(尽量减少任意选择和认知开销)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 |
Priority A: Essential (Vue2.x)
(错误预防)for Vue.js 2.x
执行此类别中的所有规则,以及所有更高优先级的规则,使用以下扩展:
{
"extends": "plugin:vue/essential"
}
Priority B: Strongly Recommended (Vue2.x)
(提高可读性)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-槽指令样式 | 🔧 |
Priority C: Recommended (Vue2.x)
(尽量减少任意选择和认知开销)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 |
Uncategorized
没有预设可启用此类别中的规则。如果你想,请启用每个规则。
For example::
{
"rules": {
"vue/block-tag-newline": "error"
}
}
Extension Rules
下面的扩展规则为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 | 要求或不允许在模板字符串的嵌入表达式周围设置间距 | 🔧 |
更多推荐
已为社区贡献1条内容
所有评论(0)