.eslintrc.js
/**
* 使用 vue cli 3 创建项目时默认生成 .eslint.js 文件及默认配置,
* 修改对应的选项已适合 vue 项目开发
*/
const path = require('path');
module.exports = {
root: true,
env: {
node: true,
},
extends: [
'plugin:vue/essential',
'@vue/airbnb',
],
settings: {
// vscode eslint 插件处理别名定义时无法正确显示的问题
'import/resolver': {
webpack: {
config: {
resolve: {
alias: {
'@': path.resolve('src'),
}
}
}
},
},
},
rules: {
// 禁用 console
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
// 禁用 debugger
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
// 大括号内是否允许不必要的空格
'object-curly-spacing': [0, 'never'],
// 要求或禁止使用拖尾逗号
// 'comma-dangle': 0,
// 要求或禁止在注释前有空白
// 'spaced-comment': 0,
// 要求或禁止块内填充
'padded-blocks': 0,
// 要求或禁止命名的 function 表达式
// 'func-names': 0,
// 强制在花括号中使用一致的空格
'object-curly-spacing': 0,
// 禁止出现未使用过的变量
// 'no-unused-vars': 1,
// 禁止定义前使用
// 'no-use-before-define': 2,
// 要求或禁止文件末尾保留一行空行
// 'eol-last': 0,
// 要求使用 const 声明那些声明后不再被修改的变量
'prefer-const': 0,
// 禁用行尾空白
// 'no-trailing-spaces': 0,
// 禁止在 else 前有 return
// 'no-else-return': 0,
// 要求构造函数首字母大写
'new-cap': 0,
// 强制行的最大长度
'max-len': [0, 80, 2],
// 要求箭头函数体使用大括号
// 'arrow-body-style': 0,
// 要求使用 === 和 !==
// 'eqeqeq': 0,
// 要求对象字面量属性名称使用引号
// 'quote-props': 0,
// 大括号风格要求
// 'brace-style': 0,
// 需要约束 for-in Object.prototype.hasOwnProperty.call(foo, key)
// 'guard-for-in': 0,
// 禁止使用特定的语法
'no-restricted-syntax': 0,
// 建议使用模板而非字符串连接
// 'prefer-template': 0,
// 禁止扩展原生对象
// 'no-extend-native': 0,
// 要求使用一致的 return 语句
// 'consistent-return': 0,
// 禁止标识符中有悬空下划线
'no-underscore-dangle': ["error", { "allow": ["_id"] }],
// 禁止在正则表达式中使用控制字符
// 'no-control-regex': 0,
// 禁止使用无关的依赖包
'import/no-extraneous-dependencies': ['error', {'devDependencies': ['**/*.test.js', '**/*.spec.js', '**/*.mock.js', '**/*vue.config.js']}],
},
parserOptions: {
parser: 'babel-eslint',
},
};