canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
464 lines (461 loc) • 10.6 kB
JavaScript
module.exports = {
plugins: [
'babel',
'import',
'sorting'
],
ecmaFeatures: {
arrowFunctions: true,
blockBindings: true,
classes: true,
defaultParams: true,
destructuring: true,
modules: true,
jsx: true
},
env: {
browser: true,
mocha: true,
node: true,
es6: true
},
rules: {
'comma-dangle': [
2,
'never'
],
'no-cond-assign': 2,
'no-console': 1,
'no-constant-condition': 1,
'no-control-regex': 2,
'no-debugger': 1,
'no-dupe-args': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty': 1,
'no-ex-assign': 2,
'no-extra-boolean-cast': 0,
'no-extra-parens': 2,
'no-extra-semi': 2,
'no-func-assign': 2,
'no-inner-declarations': 2,
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-negated-in-lhs': 2,
'no-obj-calls': 2,
'no-regex-spaces': 2,
'no-sparse-arrays': 2,
'no-unexpected-multiline': 2,
'no-unreachable': 1,
'use-isnan': 2,
'valid-jsdoc': [
1,
{
'requireParamDescription': false,
'requireReturnDescription': false
}
],
'valid-typeof': 2,
'accessor-pairs': 2,
'block-scoped-var': 2,
'complexity': [
1,
10
],
'consistent-return': 2,
'curly': 2,
'default-case': 0,
'dot-location': [
2,
'property'
],
'dot-notation': 2,
'eqeqeq': 2,
'guard-for-in': 2,
'no-alert': 2,
'no-caller': 2,
'no-case-declarations': 2,
'no-div-regex': 2,
'no-else-return': 0,
'no-empty-label': 2,
'no-empty-pattern': 2,
'no-eq-null': 2,
'no-eval': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-implicit-coercion': 2,
'no-implied-eval': 2,
'no-invalid-this': 0,
'no-iterator': 2,
'no-labels': 2,
'no-lone-blocks': 2,
'no-loop-func': 2,
'no-magic-numbers': 0,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-native-reassign': 2,
'no-new-func': 2,
'no-new-wrappers': 2,
'no-new': 2,
'no-octal-escape': 2,
'no-octal': 2,
'no-param-reassign': [
2,
{
'props': false
}
],
'no-process-env': 2,
'no-proto': 2,
'no-redeclare': [
2,
{
'builtinGlobals': true
}
],
'no-return-assign': 2,
'no-script-url': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-throw-literal': 2,
'no-unused-expressions': 2,
'no-useless-call': 2,
'no-useless-concat': 2,
'no-void': 2,
'no-warning-comments': [
1,
{
'terms': [
'todo',
'@toto'
],
'location': 'start'
}
],
'no-with': 2,
'radix': 2,
'vars-on-top': 2,
'wrap-iife': [
2,
'inside'
],
'yoda': 0,
'strict': [
2,
'never'
],
'init-declarations': [
2,
'never'
],
'no-catch-shadow': 2,
'no-delete-var': 2,
'no-label-var': 2,
'no-shadow-restricted-names': 2,
'no-shadow': [
2,
{
'builtinGlobals': false,
'hoist': 'all'
}
],
'no-undef-init': 2,
'no-undef': 2,
'no-undefined': 2,
'no-unused-vars': 2,
'no-use-before-define': 2,
'callback-return': 2,
'global-require': 2,
'handle-callback-err': 2,
'no-mixed-requires': 0,
'no-new-require': 2,
'no-path-concat': 2,
'no-process-exit': 2,
'no-restricted-modules': 0,
'no-sync': 0,
'array-bracket-spacing': [
2,
'never'
],
'block-spacing': [
2,
'always'
],
'brace-style': [
2,
'1tbs',
{
'allowSingleLine': true
}
],
'camelcase': [
2,
{
'properties': 'always'
}
],
'comma-spacing': [
2,
{
'before': false,
'after': true
}
],
'comma-style': [
2,
'last'
],
'computed-property-spacing': [
2,
'never'
],
'consistent-this': [
2,
'self'
],
'eol-last': 2,
'func-names': 0,
'func-style': [
2,
'expression'
],
'id-length': [
1,
{
'min': 2,
'max': 50,
'exceptions': [
'P',
'$',
'_'
]
}
],
'id-match': [
1,
'(^[A-Za-z]+(?:[A-Z][a-z]*)*\\d*$)|(^[A-Z]+(_[A-Z]+)*(_\\d$)*$)|(^(_|\\$)$)',
{
'properties': true
}
],
'indent': [
2,
4
],
'jsx-quotes': [
1,
'prefer-single'
],
'key-spacing': [
2,
{
'beforeColon': false,
'afterColon': true
}
],
'linebreak-style': [
2,
'unix'
],
'lines-around-comment': [
2,
{
'beforeBlockComment': false,
'beforeLineComment': false
}
],
'max-nested-callbacks': [
1,
3
],
'new-cap': [
0,
{
'newIsCap': true,
'capIsNew': false
}
],
'new-parens': 2,
'newline-after-var': [
2,
'always'
],
'no-array-constructor': 2,
'no-continue': 2,
'no-inline-comments': 2,
'no-lonely-if': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multiple-empty-lines': [
2,
{
'max': 2
}
],
'no-negated-condition': 2,
'no-nested-ternary': 2,
'no-new-object': 2,
'no-restricted-syntax': [
2,
'TemplateLiteral'
],
'no-spaced-func': 2,
'no-ternary': 0,
'no-trailing-spaces': 2,
'no-underscore-dangle': 2,
'no-unneeded-ternary': 2,
'object-curly-spacing': [
0,
'never'
],
'one-var': [
2,
'always'
],
'operator-assignment': [
2,
'always'
],
'operator-linebreak': [
2,
'after'
],
'padded-blocks': [
2,
'never'
],
'quote-props': [
2,
'as-needed'
],
'quotes': [
2,
'single'
],
'require-jsdoc': 0,
'semi-spacing': [
2,
{
'before': false,
'after': true
}
],
'semi': [
2,
'always'
],
'sort-vars': 2,
'space-after-keywords': [
2,
'always'
],
'space-before-blocks': [
2,
'always'
],
'space-before-function-paren': [
2,
'always'
],
'space-before-keywords': [
2,
'always'
],
'space-in-parens': [
2,
'never'
],
'space-infix-ops': 2,
'space-return-throw-case': 2,
'space-unary-ops': [
2,
{
'words': true,
'nonwords': false
}
],
'spaced-comment': [
2,
'always'
],
'wrap-regex': 0,
'arrow-body-style': [
2,
'always'
],
'arrow-parens': [
0,
'always'
],
'arrow-spacing': [
2,
{
'before': true,
'after': true
}
],
'constructor-super': 2,
'generator-star-spacing': [
0,
{
'before': true,
'after': false
}
],
'no-arrow-condition': 2,
'no-class-assign': 2,
'no-const-assign': 2,
'no-dupe-class-members': 2,
'no-this-before-super': 2,
'no-var': 2,
'object-shorthand': [
0,
'always'
],
'prefer-arrow-callback': 2,
'prefer-const': 0,
'prefer-reflect': 2,
'prefer-spread': 2,
'prefer-template': 0,
'require-yield': 2,
'import/no-unresolved': 0,
'import/named': 2,
'import/default': 2,
'import/namespace': 2,
'import/no-require': 2,
'import/no-named-as-default': 2,
'import/export': 2,
'import/no-duplicates': 2,
'import/imports-first': [
2,
{
'absolute-first': true
}
],
'babel/generator-star-spacing': 1,
'babel/new-cap': 0,
'babel/object-curly-spacing': 1,
'babel/object-shorthand': [
1,
'always'
],
'babel/arrow-parens': 1,
'babel/no-await-in-loop': 1,
'sorting/sort-object-props': [
1,
{
ignoreCase: false,
ignoreMethods: false
}
]
},
settings: {
'import/ignore': [
'node_modules',
'css',
'\\.scss$'
]
}
};