packages-dev/eslint-config/rules/es.js (96 lines of code) (raw):
// es5/6 通用
module.exports = {
/**
* 80 - 100 太小了
*/
'max-len': ['warn', 200, 2, {
ignorePattern: 'data:image/\\w+;base64,',
ignoreComments: false,
ignoreTrailingComments: true,
ignoreUrls: true,
ignoreStrings: true,
ignoreRegExpLiterals: true,
ignoreTemplateLiterals: true
}],
/*
* eslint-config-ali 用的是 multi-line,且说「多行语句必须用大括号包裹,单行语句推荐用大括号包裹」
* 但这会导致不一致,且容易在增加代码的时候出错,所以全加
*/
curly: ['error', 'all'],
/**
* https://eslint.org/docs/rules/object-curly-newline
*
* eslint-config-ali 设成了 off
*/
'object-curly-newline': ['error', {
ObjectExpression: {
multiline: true,
minProperties: 1
},
ObjectPattern: {
multiline: true,
minProperties: 1
},
ImportDeclaration: 'always',
ExportDeclaration: {
consistent: true
}
}],
/**
* https://eslint.org/docs/rules/no-else-return
*
* 这条规则其实可以提高代码的可理解度,但 eslint-config-ali 把它关了
*/
'no-else-return': ['warn', {
allowElseIf: false
}],
/**
* https://eslint.org/docs/rules/no-console
*
* 由 eslint-config-ali 的 warn 提升至 error
*/
'no-console': 'error',
/**
* https://eslint.org/docs/rules/no-alert
*
* 由 eslint-config-ali 的 warn 提升至 error
*/
'no-alert': 'error',
/**
* eslint-config-ali 把 props 设成了 true,然后加了 ignorePropertyModificationsFor 配置(在我看来 ignorePropertyModificationsFor 只能应用层级来配)
*/
'no-param-reassign': ['warn', {
props: false
}],
'no-trailing-spaces': ['error', {
skipBlankLines: true,
ignoreComments: true
}],
/**
* https://eslint.org/docs/rules/eol-last
*
* 不认为现代的编译器还需要这个
*/
'eol-last': 'off',
/**
* https://eslint.org/docs/rules/comma-dangle
*
* 不论 es5 还是 es6 都不要加额外的逗号,额外的逗号会产生代码风格上的歧义,比如一个对象在写成一行的时候可能如下:
*
* ```
* { key1: value1, key2: value2 }
* ```
*
* 而写成多行的时候,会被要求
*
* ```
* {
* key1: value1,
* key2: value2,
* }
* ```
*
* 所以不要有多余的逗号,那并不属于代码
*/
'comma-dangle': [
'error',
'never'
],
/**
* https://eslint.org/docs/rules/comma-spaing
*/
'comma-spacing': ['error', {
before: false,
after: true
}],
/**
* anonymous: always -> never
*
* https://eslint.org/docs/rules/space-before-function-paren
*/
'space-before-function-paren': ['error', {
anonymous: 'never', // eslint-config-ali 为 'always'
named: 'never',
asyncArrow: 'always'
}],
'spaced-comment': ['error', 'always'],
indent: ['error', 2, {
SwitchCase: 1,
ArrayExpression: 1,
MemberExpression: 2,
CallExpression: {
arguments: 2
},
FunctionExpression: {
body: 1,
parameters: 2
},
FunctionDeclaration: {
body: 1,
parameters: 2
}
}],
/**
* https://eslint.org/docs/rules/padding-line-between-statements
*
* eslint-config-ali 禁用了它..
*/
'padding-line-between-statements': ['error', {
blankLine: 'always',
prev: ['const', 'let', 'var', 'block', 'block-like'],
next: '*'
}, {
blankLine: 'always',
prev: '*',
next: ['return', 'throw', 'break', 'continue', 'block', 'block-like', 'export']
}, {
blankLine: 'any',
prev: ['const', 'let', 'var'],
next: ['const', 'let', 'var']
}, {
blankLine: 'any',
prev: ['export'],
next: ['export']
}, {
blankLine: 'never',
prev: '*',
next: ['case', 'default']
}],
/**
* https://eslint.org/docs/rules/padded-blocks
*
* eslint-config-ali 的 level 是 warn
*/
'padded-blocks': ['error', 'never'],
/**
* https://eslint.org/docs/rules/no-multiple-empty-lines
*/
'no-multiple-empty-lines': ['error', {
max: 1,
maxBOF: 0,
maxEOF: 0
}]
};