diff --git a/packages/eslint-config-airbnb/base.js b/packages/eslint-config-airbnb/base.js index ff9904e775..2f2a9e6e62 100644 --- a/packages/eslint-config-airbnb/base.js +++ b/packages/eslint-config-airbnb/base.js @@ -1,7 +1,7 @@ module.exports = { 'extends': [ - 'eslint-config-airbnb/legacy', - 'eslint-config-airbnb/rules/es6', + 'eslint-config-tyrchen/legacy', + 'eslint-config-tyrchen/rules/es6', ], 'parser': 'babel-eslint', 'rules': {} diff --git a/packages/eslint-config-airbnb/base/index.js b/packages/eslint-config-airbnb/base/index.js new file mode 100644 index 0000000000..6194001980 --- /dev/null +++ b/packages/eslint-config-airbnb/base/index.js @@ -0,0 +1,174 @@ +module.exports = { + 'parser': 'babel-eslint', // https://github.com/babel/babel-eslint + 'env': { // http://eslint.org/docs/user-guide/configuring.html#specifying-environments + 'browser': true, // browser global variables + 'node': true // Node.js global variables and Node.js-specific rules + }, + 'ecmaFeatures': { + 'arrowFunctions': true, + 'blockBindings': true, + 'classes': true, + 'defaultParams': true, + 'destructuring': true, + 'forOf': true, + 'generators': false, + 'modules': true, + 'objectLiteralComputedProperties': true, + 'objectLiteralDuplicateProperties': false, + 'objectLiteralShorthandMethods': true, + 'objectLiteralShorthandProperties': true, + 'spread': true, + 'superInFunctions': true, + 'templateStrings': true, + 'jsx': true + }, + 'rules': { + /** + * Strict mode + */ + // babel inserts 'use strict'; for us + 'strict': [2, 'never'], // http://eslint.org/docs/rules/strict + + /** + * ES6 + */ + 'no-var': 2, // http://eslint.org/docs/rules/no-var + 'prefer-const': 2, // http://eslint.org/docs/rules/prefer-const + + /** + * Variables + */ + 'no-shadow': 2, // http://eslint.org/docs/rules/no-shadow + 'no-shadow-restricted-names': 2, // http://eslint.org/docs/rules/no-shadow-restricted-names + 'no-undef': 2, // http://eslint.org/docs/rules/no-undef + 'no-unused-vars': [2, { // http://eslint.org/docs/rules/no-unused-vars + 'vars': 'local', + 'args': 'after-used' + }], + 'no-use-before-define': 2, // http://eslint.org/docs/rules/no-use-before-define + + /** + * Possible errors + */ + 'comma-dangle': [2, 'never'], // http://eslint.org/docs/rules/comma-dangle + 'no-cond-assign': [2, 'always'], // http://eslint.org/docs/rules/no-cond-assign + 'no-console': 1, // http://eslint.org/docs/rules/no-console + 'no-debugger': 1, // http://eslint.org/docs/rules/no-debugger + 'no-alert': 1, // http://eslint.org/docs/rules/no-alert + 'no-constant-condition': 1, // http://eslint.org/docs/rules/no-constant-condition + 'no-dupe-keys': 2, // http://eslint.org/docs/rules/no-dupe-keys + 'no-duplicate-case': 2, // http://eslint.org/docs/rules/no-duplicate-case + 'no-empty': 2, // http://eslint.org/docs/rules/no-empty + 'no-ex-assign': 2, // http://eslint.org/docs/rules/no-ex-assign + 'no-extra-boolean-cast': 0, // http://eslint.org/docs/rules/no-extra-boolean-cast + 'no-extra-semi': 2, // http://eslint.org/docs/rules/no-extra-semi + 'no-func-assign': 2, // http://eslint.org/docs/rules/no-func-assign + 'no-inner-declarations': 2, // http://eslint.org/docs/rules/no-inner-declarations + 'no-invalid-regexp': 2, // http://eslint.org/docs/rules/no-invalid-regexp + 'no-irregular-whitespace': 2, // http://eslint.org/docs/rules/no-irregular-whitespace + 'no-obj-calls': 2, // http://eslint.org/docs/rules/no-obj-calls + 'no-sparse-arrays': 2, // http://eslint.org/docs/rules/no-sparse-arrays + 'no-unreachable': 2, // http://eslint.org/docs/rules/no-unreachable + 'use-isnan': 2, // http://eslint.org/docs/rules/use-isnan + 'block-scoped-var': 2, // http://eslint.org/docs/rules/block-scoped-var + + /** + * Best practices + */ + 'consistent-return': 2, // http://eslint.org/docs/rules/consistent-return + 'curly': [2, 'multi-line'], // http://eslint.org/docs/rules/curly + 'default-case': 2, // http://eslint.org/docs/rules/default-case + 'dot-notation': [2, { // http://eslint.org/docs/rules/dot-notation + 'allowKeywords': true + }], + 'eqeqeq': 2, // http://eslint.org/docs/rules/eqeqeq + 'guard-for-in': 2, // http://eslint.org/docs/rules/guard-for-in + 'no-caller': 2, // http://eslint.org/docs/rules/no-caller + 'no-else-return': 2, // http://eslint.org/docs/rules/no-else-return + 'no-eq-null': 2, // http://eslint.org/docs/rules/no-eq-null + 'no-eval': 2, // http://eslint.org/docs/rules/no-eval + 'no-extend-native': 2, // http://eslint.org/docs/rules/no-extend-native + 'no-extra-bind': 2, // http://eslint.org/docs/rules/no-extra-bind + 'no-fallthrough': 2, // http://eslint.org/docs/rules/no-fallthrough + 'no-floating-decimal': 2, // http://eslint.org/docs/rules/no-floating-decimal + 'no-implied-eval': 2, // http://eslint.org/docs/rules/no-implied-eval + 'no-lone-blocks': 2, // http://eslint.org/docs/rules/no-lone-blocks + 'no-loop-func': 2, // http://eslint.org/docs/rules/no-loop-func + 'no-multi-str': 2, // http://eslint.org/docs/rules/no-multi-str + 'no-native-reassign': 2, // http://eslint.org/docs/rules/no-native-reassign + 'no-new': 2, // http://eslint.org/docs/rules/no-new + 'no-new-func': 2, // http://eslint.org/docs/rules/no-new-func + 'no-new-wrappers': 2, // http://eslint.org/docs/rules/no-new-wrappers + 'no-octal': 2, // http://eslint.org/docs/rules/no-octal + 'no-octal-escape': 2, // http://eslint.org/docs/rules/no-octal-escape + 'no-param-reassign': 2, // http://eslint.org/docs/rules/no-param-reassign + 'no-proto': 2, // http://eslint.org/docs/rules/no-proto + 'no-redeclare': 2, // http://eslint.org/docs/rules/no-redeclare + 'no-return-assign': 2, // http://eslint.org/docs/rules/no-return-assign + 'no-script-url': 2, // http://eslint.org/docs/rules/no-script-url + 'no-self-compare': 2, // http://eslint.org/docs/rules/no-self-compare + 'no-sequences': 2, // http://eslint.org/docs/rules/no-sequences + 'no-throw-literal': 2, // http://eslint.org/docs/rules/no-throw-literal + 'no-with': 2, // http://eslint.org/docs/rules/no-with + 'radix': 2, // http://eslint.org/docs/rules/radix + 'vars-on-top': 2, // http://eslint.org/docs/rules/vars-on-top + 'wrap-iife': [2, 'any'], // http://eslint.org/docs/rules/wrap-iife + 'yoda': 2, // http://eslint.org/docs/rules/yoda + + /** + * Style + */ + 'indent': [2, 2], // http://eslint.org/docs/rules/indent + 'brace-style': [ + 2, // http://eslint.org/docs/rules/brace-style + '1tbs', { + 'allowSingleLine': true + } + ], + 'quotes': [ + 2, 'single', 'avoid-escape' // http://eslint.org/docs/rules/quotes + ], + 'camelcase': [2, { // http://eslint.org/docs/rules/camelcase + 'properties': 'never' + }], + 'comma-spacing': [2, { // http://eslint.org/docs/rules/comma-spacing + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], // http://eslint.org/docs/rules/comma-style + 'eol-last': 2, // http://eslint.org/docs/rules/eol-last + 'func-names': 1, // http://eslint.org/docs/rules/func-names + 'key-spacing': [2, { // http://eslint.org/docs/rules/key-spacing + 'beforeColon': false, + 'afterColon': true + }], + 'new-cap': [2, { // http://eslint.org/docs/rules/new-cap + 'newIsCap': true + }], + 'no-multiple-empty-lines': [2, { // http://eslint.org/docs/rules/no-multiple-empty-lines + 'max': 2 + }], + 'no-nested-ternary': 2, // http://eslint.org/docs/rules/no-nested-ternary + 'no-new-object': 2, // http://eslint.org/docs/rules/no-new-object + 'no-spaced-func': 2, // http://eslint.org/docs/rules/no-spaced-func + 'no-trailing-spaces': 2, // http://eslint.org/docs/rules/no-trailing-spaces + 'no-extra-parens': [2, 'functions'], // http://eslint.org/docs/rules/no-extra-parens + 'no-underscore-dangle': 0, // http://eslint.org/docs/rules/no-underscore-dangle + 'one-var': [2, 'never'], // http://eslint.org/docs/rules/one-var + 'padded-blocks': [2, 'never'], // http://eslint.org/docs/rules/padded-blocks + 'semi': [2, 'never'], // http://eslint.org/docs/rules/semi + 'semi-spacing': [2, { // http://eslint.org/docs/rules/semi-spacing + 'before': false, + 'after': true + }], + 'space-after-keywords': 2, // http://eslint.org/docs/rules/space-after-keywords + 'space-before-blocks': 2, // http://eslint.org/docs/rules/space-before-blocks + 'space-before-function-paren': [2, 'never'], // http://eslint.org/docs/rules/space-before-function-paren + 'space-infix-ops': 2, // http://eslint.org/docs/rules/space-infix-ops + 'space-return-throw-case': 2, // http://eslint.org/docs/rules/space-return-throw-case + 'spaced-comment': [2, 'always', {// http://eslint.org/docs/rules/spaced-comment + 'exceptions': ['-', '+'], + 'markers': ['=', '!'] // space here to support sprockets directives + }], + } +}; diff --git a/packages/eslint-config-airbnb/index.js b/packages/eslint-config-airbnb/index.js index 46d601fe3f..0ed935318c 100644 --- a/packages/eslint-config-airbnb/index.js +++ b/packages/eslint-config-airbnb/index.js @@ -1,7 +1,7 @@ module.exports = { 'extends': [ - 'eslint-config-airbnb/base', - 'eslint-config-airbnb/rules/react', + 'eslint-config-tyrchen/base', + 'eslint-config-tyrchen/rules/react', ], rules: {} }; diff --git a/packages/eslint-config-airbnb/legacy.js b/packages/eslint-config-airbnb/legacy.js index 83a4931e84..a173a07792 100644 --- a/packages/eslint-config-airbnb/legacy.js +++ b/packages/eslint-config-airbnb/legacy.js @@ -1,12 +1,12 @@ module.exports = { 'extends': [ - 'eslint-config-airbnb/rules/best-practices', - 'eslint-config-airbnb/rules/errors', - 'eslint-config-airbnb/rules/legacy', - 'eslint-config-airbnb/rules/node', - 'eslint-config-airbnb/rules/strict', - 'eslint-config-airbnb/rules/style', - 'eslint-config-airbnb/rules/variables' + 'eslint-config-tyrchen/rules/best-practices', + 'eslint-config-tyrchen/rules/errors', + 'eslint-config-tyrchen/rules/legacy', + 'eslint-config-tyrchen/rules/node', + 'eslint-config-tyrchen/rules/strict', + 'eslint-config-tyrchen/rules/style', + 'eslint-config-tyrchen/rules/variables' ], 'env': { 'browser': true, diff --git a/packages/eslint-config-airbnb/package.json b/packages/eslint-config-airbnb/package.json index e7cd1bcc3c..1f5c71f576 100644 --- a/packages/eslint-config-airbnb/package.json +++ b/packages/eslint-config-airbnb/package.json @@ -1,7 +1,7 @@ { - "name": "eslint-config-airbnb", - "version": "0.1.0", - "description": "Airbnb's ESLint config, following our styleguide", + "name": "eslint-config-tyrchen", + "version": "0.2.0", + "description": "A fork to Airbnb's ESLint config, change comma-dangle to never and semi to never", "main": "index.js", "scripts": { "lint": "eslint .", @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/airbnb/javascript" + "url": "https://github.com/tyrchen/javascript" }, "keywords": [ "eslint", @@ -19,12 +19,12 @@ "javascript", "styleguide" ], - "author": "Jake Teton-Landis (https://twitter.com/@jitl)", + "author": "Tyr Chen (https://github.com/tyrchen)", "license": "MIT", "bugs": { - "url": "https://github.com/airbnb/javascript/issues" + "url": "https://github.com/tyrchen/javascript/issues" }, - "homepage": "https://github.com/airbnb/javascript", + "homepage": "https://github.com/tyrchen/javascript", "devDependencies": { "babel-eslint": "4.1.3", "babel-tape-runner": "1.2.0", diff --git a/packages/eslint-config-airbnb/rules/errors.js b/packages/eslint-config-airbnb/rules/errors.js index ec1b1aab0e..229cffe16c 100644 --- a/packages/eslint-config-airbnb/rules/errors.js +++ b/packages/eslint-config-airbnb/rules/errors.js @@ -1,7 +1,7 @@ module.exports = { 'rules': { // disallow trailing commas in object literals - 'comma-dangle': [2, 'always-multiline'], + 'comma-dangle': [2, 'never'], // disallow assignment in conditional expressions 'no-cond-assign': [2, 'always'], // disallow use of console diff --git a/packages/eslint-config-airbnb/rules/style.js b/packages/eslint-config-airbnb/rules/style.js index fa22403d8b..71785d30ec 100644 --- a/packages/eslint-config-airbnb/rules/style.js +++ b/packages/eslint-config-airbnb/rules/style.js @@ -85,7 +85,7 @@ module.exports = { // enforce spacing before and after semicolons 'semi-spacing': [2, {'before': false, 'after': true}], // require or disallow use of semicolons instead of ASI - 'semi': [2, 'always'], + 'semi': [2, 'never'], // sort variables within the same declaration block 'sort-vars': 0, // require a space after certain keywords