Skip to content

Commit

Permalink
feat(config): initial version of eslint config
Browse files Browse the repository at this point in the history
  • Loading branch information
valorkin committed Feb 26, 2016
0 parents commit a1b5141
Show file tree
Hide file tree
Showing 8 changed files with 403 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# http://editorconfig.org

root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
262 changes: 262 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
{
"env":{
"es6": true
},
"rules": {
// Possible Errors
"comma-dangle": 2,
"no-cond-assign": 2,
"no-console": 2,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty-character-class": 2,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"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": 2,
"use-isnan": 2,
"valid-jsdoc": 2,
"valid-typeof": 2,
// Best Practices
"accessor-pairs": 2,
"array-callback-return": 2,
"block-scoped-var": 2,
"complexity": 2,
"consistent-return": 2,
"curly": 2,
"default-case": 2,
"dot-location": [
2,
"property"
],
"dot-notation": 2,
"eqeqeq": [
2,
"smart"
],
"guard-for-in": 2,
"no-alert": 2,
"no-caller": 2,
"no-case-declarations": 2,
"no-div-regex": 2,
"no-else-return": 2,
"no-empty-function": 2,
"no-empty-pattern": 2,
// duplicate of eqeqeq
"no-eq-null": 0,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-label": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implicit-coercion": [
2,
{
"boolean": false,
"number": true,
"string": true,
"allow": [
"!!"
]
}
],
"no-implicit-globals": 2,
"no-implied-eval": 2,
"no-invalid-this": 2,
"no-iterator": 2,
"no-labels": 2,
"no-lone-blocks": 2,
"no-loop-func": 2,
"no-magic-numbers": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-native-reassign": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-param-reassign": 2,
"no-process-env": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unmodified-loop-condition": 2,
"no-unused-expressions": 2,
"no-unused-labels": 2,
"no-useless-call": 2,
"no-useless-concat": 2,
"no-void": 2,
"no-warning-comments": 1,
"no-with": 2,
"radix": 2,
"vars-on-top": 2,
"wrap-iife": 2,
"yoda": 2,
// strict mode
"strict": 2,
// variables
"init-declarations": 2,
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 2,
"no-shadow": 2,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-undefined": 2,
"no-unused-vars": 2,
"no-use-before-define": [2, {"functions": false, "classes": true}],
// node.js and commonjs
"callback-return": 2,
"global-require": 2,
"handle-callback-err": 2,
"no-mixed-requires": [
2,
{
"grouping": true,
"allowCall": true
}
],
"no-new-require": 2,
"no-path-concat": 2,
"no-process-exit": 2,
"no-restricted-imports": 0,
"no-restricted-modules": 0,
"no-sync": 2,
// stylistic issues
"array-bracket-spacing": 2,
"block-spacing": 2,
"brace-style": 2,
"camelcase": 2,
"comma-spacing": 2,
"comma-style": 2,
"computed-property-spacing": 2,
"consistent-this": 2,
"eol-last": 2,
"func-names": 2,
"func-style": [
2,
"declaration"
],
"id-blacklist": 2,
"id-length": 2,
"id-match": 0,
"indent": [
2,
2
],
"jsx-quotes": 0,
"key-spacing": 2,
"keyword-spacing": 2,
"linebreak-style": [
2,
"unix"
],
"lines-around-comment": 2,
"max-depth": 2,
"max-len": 2,
"max-nested-callbacks": 2,
"max-params": 2,
"max-statements": 2,
"new-cap": 2,
"new-parens": 2,
"newline-after-var": 2,
"newline-per-chained-call": 2,
"no-array-constructor": 2,
"no-bitwise": 2,
"no-continue": 2,
"no-inline-comments": 2,
"no-lonely-if": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multiple-empty-lines": 2,
"no-negated-condition": 2,
"no-nested-ternary": 2,
"no-new-object": 2,
"no-plusplus": 0,
"no-restricted-syntax": 0,
"no-spaced-func": 2,
"no-ternary": 0,
"no-trailing-spaces": 2,
"no-underscore-dangle": 2,
"no-unneeded-ternary": 2,
"no-whitespace-before-property": 2,
"object-curly-spacing": 2,
"one-var": [
2,
"never"
],
"one-var-declaration-per-line": 2,
"operator-assignment": 2,
"operator-linebreak": 2,
"padded-blocks": [
2,
"never"
],
"quote-props": [
2,
"as-needed",
{
"keywords": true
}
],
"quotes": [2, "single"],
"require-jsdoc": 0,
"semi": 2,
"semi-spacing": 2,
"sort-imports": 2,
"sort-vars": 2,
"space-before-blocks": 2,
"space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
"space-in-parens": 2,
"space-infix-ops": 2,
"space-unary-ops": 2,
"spaced-comment": 0,
"wrap-regex": 0,
// ECMAScript 6
"arrow-body-style": 2,
"arrow-parens": [2, "as-needed"],
"arrow-spacing": 2,
"constructor-super": 2,
"generator-star-spacing": 2,
"no-class-assign": 2,
"no-confusing-arrow": 2,
"no-const-assign": 2,
"no-dupe-class-members": 2,
"no-new-symbol": 2,
"no-this-before-super": 2,
"no-useless-constructor": 2,
"no-var": 2,
"object-shorthand": 2,
"prefer-arrow-callback": 2,
"prefer-const": 2,
"prefer-reflect": 2,
"prefer-rest-params": 2,
"prefer-spread": 2,
"prefer-template": 2,
"require-yield": 2,
"template-curly-spacing": 2,
"yield-star-spacing": 2
}
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Created by .ignore support plugin (hsz.mobi)
node_modules
npm-debug.log
11 changes: 11 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
language: node_js
sudo: false
node_js:
- "5"
- "4"

before_install:
- npm install -g npm@latest

script:
- npm test
42 changes: 42 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"name": "eslint-config-valorsoft",
"version": "0.0.1",
"description": "Valor Software's ESLint config, following our styleguide",
"main": "index.js",
"scripts": {
"changelog": "./node_modules/.bin/conventional-changelog -i CHANGELOG.md -s -p angular",
"github-release": "conventional-github-releaser -p angular -r 0",
"postversion": "git push origin master && git push --tags",
"test": "npm run lint && ./node_modules/.bin/mocha",
"lint": "./node_modules/.bin/eslint --ignore-path .gitignore --ext js --fix . .config"
},
"repository": {
"type": "git",
"url": "git+ssh://[email protected]/valor-software/eslint-config-valorsoft.git"
},
"keywords": [
"styleguide",
"javascript",
"valor",
"valor-software",
"config",
"eslintconfig",
"eslint"
],
"author": "Dmitriy Shekhovtsov <[email protected]>",
"license": "MIT",
"bugs": {
"url": "https://github.com/valor-software/eslint-config-valorsoft/issues"
},
"homepage": "https://github.com/valor-software/eslint-config-valorsoft#readme",
"dependencies": {
"eslint": "2.2.0"
},
"devDependencies": {
"chai": "3.5.0",
"conventional-changelog-cli": "1.1.1",
"conventional-github-releaser": "1.1.0",
"mocha": "2.4.5",
"strip-json-comments": "2.0.1"
}
}
39 changes: 39 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Welcome to the most strict eslint config ever

## Philosophy
- contains all rules
- almost all rules enabled
- this config is highly opinionated

## Where to use
- anywhere
- for tests better to add `env:"node"` and disable `newline-per-chained-call` rule

## What is disabled
- `no-eq-null` - duplicates `eqeqeq:smart`
- `no-restricted-imports`, `no-restricted-modules` - dependant on project requirements
- `id-match` - not found any particular use of this rule, `camelCase` is enough
- `jsx-quotes` - I don't use jsx so I don't care
- `no-plusplus` - why not `++`? It's nice to use when you know what you are doing
- `no-restricted-syntax` - duplicates `no-with` and `no`
- `no-ternary` - why not? but nested ternary please
- `require-jsdoc`- nice thing, but hard to follow
- `spaced-comment` - nice for meaningful comments, but hard to argue when you commenting peaces of code
- `wrap-regex` - no need

## What is tweaked
- `dot-location` - `property` mode enabled
- `eqeqeq` - `smart` mode enabled
- `no-implicit-coercion` - boolean implicit coercion enabled
- `no-use-before-define` - usage of `function` declarations before usage are allowed
- `no-mixed-requires`- `grouping` and `allowCall` checks enabled
- `func-style` - `declaration` only please
- `indent` - 2 spaces rulezzz!
- `linebreak-style` - unix only
- `one-var` - `never` use one `var|let|const` per block
- `padded-blocks` - `never` add useless padding
- `quote-props` - quote properties only `as-needed` and `keywords`

## Contribution
- what I really appreciate is configs for IDEs
- to change any rule you should have strong arguments and not only opinion
10 changes: 10 additions & 0 deletions test/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"env": {
"mocha": true,
"node": true
},
"rules": {
"no-sync": 0,
"newline-per-chained-call": 0
}
}
Loading

0 comments on commit a1b5141

Please sign in to comment.