UNPKG

eslint-config-jm

Version:
310 lines (298 loc) 9.56 kB
// // 暂时没有版权声明 // 'use strict' /** * 产生格式化的ESLint控制数组/字符串 * @param {string} type 警告类型 * @param {string|array|object} config 选项 * @param {string|array|object} extend 扩展选项 * @returns {string|array} 格式化的ESLint控制数组/字符串 */ const parseConfig = (type, config, extend) => { if (config === undefined) { return type } else if (Array.isArray(config)) { return [type, ...config] } if (extend === undefined) { return [type, config] } return [type, config, extend] } /** * 产生不发出警告的控制数组/字符串 * @param {string|array|object} [config] 选项 * @param {string|array|object} [extend] 扩展选项 * @returns {string|array} 不发出警告的控制数组/字符串 */ const off = (config, extend) => parseConfig('off', config, extend) /** * 产生警告控制数组/字符串 * @param {string|array|object} [config] 选项 * @param {string|array|object} [extend] 扩展选项 * @returns {string|array} 警告控制数组/字符串 */ const warn = (config, extend) => parseConfig('warn', config, extend) /** * 产生错误控制数组/字符串 * @param {string|array|object} [config] 选项 * @param {string|array|object} [extend] 扩展选项 * @returns {string|array} 错误控制数组/字符串 */ const error = (config, extend) => parseConfig('error', config, extend) module.exports = { rules: { 'accessor-pairs': error(), 'arrow-spacing': error({ before: true, after: true }), 'comma-spacing': error({ before: false, after: true }), 'constructor-super': error(), 'curly': error('multi-line'), 'dot-location': error('property'), 'eqeqeq': error('always', { 'null': 'ignore' }), 'generator-star-spacing': error({ before: true, after: true }), 'handle-callback-err': error('^(err|error)$'), 'indent': error(2, { SwitchCase: 1, VariableDeclarator: 1, outerIIFEBody: 1, MemberExpression: 1, FunctionDeclaration: { parameters: 1, body: 1 }, FunctionExpression: { parameters: 1, body: 1 }, CallExpression: { arguments: 1 }, ArrayExpression: 1, ObjectExpression: 1, ImportDeclaration: 1, flatTernaryExpressions: false, ignoreComments: false }), 'no-caller': error(), 'no-class-assign': error(), 'no-compare-neg-zero': error(), 'no-cond-assign': error(), 'no-const-assign': error(), 'no-constant-condition': error({ checkLoops: false }), 'no-control-regex': error(), 'no-debugger': error(), 'no-delete-var': error(), 'no-dupe-args': error(), 'no-dupe-class-members': error(), 'no-dupe-keys': error(), 'no-duplicate-case': error(), 'no-empty-character-class': error(), 'no-empty-pattern': error(), 'no-eval': error(), 'no-ex-assign': error(), 'no-extend-native': error(), 'no-extra-bind': error(), 'no-extra-boolean-cast': error(), 'no-extra-parens': error('functions'), 'no-fallthrough': error(), 'no-floating-decimal': error(), 'no-func-assign': error(), 'no-global-assign': error(), 'no-implied-eval': error(), 'no-inner-declarations': error('functions'), 'no-invalid-regexp': error(), 'no-irregular-whitespace': error(), 'no-iterator': error(), 'no-label-var': error(), 'no-labels': error({ allowLoop: false, allowSwitch: false }), 'no-lone-blocks': error(), 'no-mixed-operators': error({ allowSamePrecedence: true, groups: [ ['==', '!=', '===', '!==', '>', '>=', '<', '<='], ['&&', '||'], ['in', 'instanceof'] ] }), 'no-multi-spaces': error(), 'no-multi-str': error(), 'no-multiple-empty-lines': error({ max: 1, maxEOF: 0 }), 'no-negated-in-lhs': error(), 'no-new': error(), 'no-new-func': error(), 'no-new-object': error(), 'no-new-require': error(), 'no-new-symbol': error(), 'no-new-wrappers': error(), 'no-obj-calls': error(), 'no-octal': error(), 'no-octal-escape': error(), 'no-path-concat': error(), 'no-proto': error(), 'no-redeclare': error(), 'no-regex-spaces': error(), 'no-return-assign': error('except-parens'), 'no-return-await': error(), 'no-self-assign': error(), 'no-self-compare': error(), 'no-sequences': error(), 'no-shadow-restricted-names': error(), 'no-sparse-arrays': error(), 'no-tabs': error(), 'no-template-curly-in-string': error(), 'no-this-before-super': error(), 'no-throw-literal': error(), 'no-undef': error(), 'no-undef-init': error(), 'no-unexpected-multiline': error(), 'no-unmodified-loop-condition': error(), 'no-unneeded-ternary': error({ defaultAssignment: false }), 'no-unreachable': error(), 'no-unsafe-finally': error(), 'no-unsafe-negation': error(), 'no-unused-expressions': error({ allowShortCircuit: true, allowTernary: true, allowTaggedTemplates: true }), 'no-unused-vars': error({ vars: 'all', args: 'none', ignoreRestSiblings: true }), 'no-use-before-define': error({ functions: false, classes: false, variables: false }), 'no-useless-call': error(), 'no-useless-computed-key': error(), 'no-useless-constructor': error(), 'no-useless-escape': error(), 'no-useless-rename': error(), 'no-useless-return': error(), 'no-with': error(), 'operator-linebreak': error('after', { overrides: { '?': 'before', ':': 'before', '+': 'ignore' } }), 'padded-blocks': error({ blocks: 'never', switches: 'never', classes: 'never' }), 'prefer-promise-reject-errors': error(), 'quotes': error('single', { avoidEscape: true, allowTemplateLiterals: true }), 'rest-spread-spacing': error('never'), 'semi': error('never'), 'semi-spacing': error({ before: false, after: true }), 'space-before-blocks': error('always'), 'space-before-function-paren': error('always'), 'space-in-parens': error('never'), 'space-infix-ops': error(), 'space-unary-ops': error({ 'words': true, 'nonwords': false }), 'spaced-comment': error('always', { line: { markers: ['*package', '!', '/', ',', '='] }, block: { balanced: true, markers: ['*package', '!', ',', ':', '::', 'flow-include'], exceptions: ['*'] } }), 'symbol-description': error(), 'template-curly-spacing': error('never'), 'template-tag-spacing': error('never'), 'unicode-bom': error('never'), 'use-isnan': error(), 'valid-typeof': error({ requireStringLiterals: true }), 'wrap-iife':error('any', { functionPrototypeMethods: true }), 'yield-star-spacing': error('both'), 'yoda': error('never'), 'array-bracket-newline': error({ multiline: true }), 'array-bracket-spacing': error('never'), // 'array-element-newline': error({ multiline: true }), 'block-spacing': error(), 'brace-style': error(), 'camelcase': error({ properties: 'never' }), 'comma-dangle': error('never'), 'comma-spacing': error({ before: false, after: true }), 'comma-style': error('last'), 'computed-property-spacing': error('never'), 'consistent-this': error('that'), 'eol-last': error('always'), 'func-call-spacing': error('never'), // 'func-style': warn('expression'), 'function-paren-newline': error('multiline'), // 'id-blacklist': warn([ // 'error', 'err', 'e', 'list', 'data', 'item', 'callback' // ]), 'implicit-arrow-linebreak': error('beside'), 'key-spacing': error({ beforeColon: false, afterColon: true }), 'keyword-spacing': error({ before: true, after: true }), 'lines-between-class-members': error('never'), // 'max-depth': warn(4), // 'max-len': warn({ code: 80 }), // 'max-lines': warn({ // max: 500, // skipBlankLines: true, // skipComments: true // }), 'max-nested-callbacks': warn(10), 'max-params': warn(6), 'new-cap': error({ newIsCap: true }), 'new-parens': error(), // 'newline-per-chained-call': error({ ignoreChainWithDepth: 2 }), 'no-array-constructor': error(), 'no-mixed-spaces-and-tabs': error(), 'no-multi-assign': error(), 'no-nested-ternary': error(), 'no-trailing-spaces': error({ ignoreComments: true }), 'no-whitespace-before-property': error(), 'object-curly-newline': error({ multiline: true }), 'object-curly-spacing': error('always'), 'object-property-newline': error({ allowAllPropertiesOnSameLine: true }), 'one-var': error('never'), 'operator-assignment': error('always'), 'padding-line-between-statements': error(), // 'import/export': error(), // 'import/first': error(), // 'import/no-duplicates': error(), // 'import/no-named-default': error(), // 'import/no-webpack-loader-syntax': error(), // 'node/no-deprecated-api': error(), // 'node/process-exit-as-throw': error(), // 'promise/param-names': error(), // 'standard/array-bracket-even-spacing': error('either'), // 'standard/computed-property-even-spacing': error('even'), // 'standard/no-callback-literal':error(), // 'standard/object-curly-even-spacing': error('either') } }