eslint规范
这套规范是我长期开发vue时,使用的一套代码约束规范,个人用着还是很舒服的,和以前的编码习惯没有太多的冲突,
本人主要是从下列几个方向出发,来约束代码,当多人参与项目开发时,规范风格能保持一致,可以省去不少麻烦。
- 可能引发逻辑错误
- 他人误解,代码可读性
- 后期维护,摒弃过时的书写方式
// https://eslint.org/docs/user-guide/configuring
module.exports = {
//此项是用来告诉eslint找当前配置文件不能往父级查找
root: true,
parserOptions: {
//此项是用来指定eslint解析器的,解析器必须符合规则,babel-eslint解析器是对babel解析器的包装使其与ESLint解析
parser: 'babel-eslint',
//此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为module,指某块导入方式
// sourceType: 'module'
},
//此项指定环境的全局变量,下面的配置指定为浏览器环境或Node.js
env: {
// browser: true,
node:true
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
// 此项是用来配置标准的js风格,就是说写代码的时候要规范的写,如果你使用vs-code我觉得应该可以避免出错
extends: [
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
'plugin:vue/essential',
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
'standard'
],
// required to lint *.vue files
// 此项是用来提供插件的,插件名称省略了eslint-plugin-,下面这个配置是用来规范vue || html的
plugins: [
'vue'
],
// 下面这些rules是用来设置从插件来的规范代码的规则,使用必须去掉前缀eslint-plugin-
// 主要有如下的设置规则,可以设置字符串也可以设置数字,两者效果一致
// "off" -> 0 关闭规则
// "warn" -> 1 开启警告规则
//"error" -> 2 开启错误规则
rules: {
// allow async-await
'generator-star-spacing': 'off',//生成器函数*的前后空格
'block-spacing':0, //Requires a space before or after '{'
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',//生产环境不允许使用debugger
'no-unused-vars': [0, {
'vars': 'local', 'args': 'none'}],// 允许声明未使用变量、 参数不检查
//'no-unused-vars': [2, {'vars': 'all', 'args': 'after-used'}],//不能有声明后未被使用的变量或参数
'semi': [0],// 关闭语句强制分号结尾
'key-spacing': [0, {
'beforeColon': false, 'afterColon': true}],//对象字面量中冒号的前后空格
'no-multiple-empty-lines': [2, {
'max': 1}],
// 'key-spacing': [0, {'singleLine': {'beforeColon': false,'afterColon': true},'multiLine': {'beforeColon': true,'afterColon': true,'align': 'colon'}}],//key值前面是否要有空格
'keyword-spacing':0,//空行最多不能超过1行
'no-mixed-spaces-and-tabs': [0],//关闭禁止混用tab和空格
'indent': 0,//缩进风格:数组第一个指定是否启用这个规则,第二个指定几个空格
'no-alert': 0,//禁止使用alert confirm prompt
'no-array-constructor': 2,//禁止使用数组构造器
'no-bitwise': 0,//禁止使用按位运算符
'no-caller': 1,//禁止使用arguments.caller或arguments.callee
'no-catch-shadow': 2,//禁止catch子句参数与外部作用域变量同名
'no-class-assign': 2,//禁止给类赋值
'no-cond-assign': 2,//禁止在条件表达式中使用赋值语句
'no-console': 0,//禁止使用console
'no-const-assign': 2,//禁止修改const声明的变量
'no-constant-condition': 2,//禁止在条件中使用常量表达式 if(true) if(1)
'no-continue