diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..322a0f0 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,59 @@ +{ + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 6 + }, + "env": { + "node": true, + "es6": true + }, + "rules": { + "strict": ["error", "global"], + /* possible errors */ + "no-console": 0, + "no-empty": ["error", { "allowEmptyCatch": true }], // disallow empty block statements + /* best practices */ + "curly": 2, // enforce consistent brace style for all control statements + "no-eval": 2, // disallow the use of eval() + "no-extend-native": 2, // disallow extending native types + "no-global-assign": 2, // disallow assignments to native objects or read-only global variables + "no-implicit-coercion": 2, // disallow shorthand type conversions + "no-implicit-globals": 2, // disallow var and named function declarations in the global scope + "no-implied-eval": 2, // disallow the use of eval()-like methods + "no-lone-blocks": 2, // disallow unnecessary nested blocks + "no-useless-escape": 0, // disallow unnecessary escape characters + /* Stylistic Issues */ + "array-bracket-spacing": 1, // enforce consistent spacing inside array brackets + "block-spacing": 1, // enforce consistent spacing inside single-line blocks + "comma-spacing": 1, // enforce consistent spacing before and after commas + "computed-property-spacing": 1, // enforce consistent spacing inside computed property brackets + "eol-last": 1, // enforce at least one newline at the end of files + "func-call-spacing": 1, // require or disallow spacing between function identifiers and their invocations + "indent": ["warn", 2, {"MemberExpression": 0, "SwitchCase": 1}], // enforce consistent indentation + "key-spacing": ["warn", { "mode": "minimum" }], // enforce consistent spacing before and after keywords + "keyword-spacing": 1, // enforce consistent spacing between keys and values in object literal properties + "linebreak-style": 1, // enforce consistent linebreak style + "no-trailing-spaces": 1, // disallow trailing whitespace at the end of lines + "no-var": 1, // require let or const instead of var + "object-curly-spacing": ["warn", "never"], // enforce consistent spacing inside braces + "one-var": ["warn", "never"], // enforce variables to be declared either together or separately in functions + "padded-blocks": ["warn", "never"], // require or disallow padding within blocks + "semi": ["warn", "always"], // require or disallow semicolons instead of ASI + "semi-spacing": 1, // enforce consistent spacing before and after semicolons + "space-before-blocks": 1, // enforce consistent spacing before blocks + "space-before-function-paren": ["warn", "never"], // enforce consistent spacing before function definition opening parenthesis + "space-in-parens": ["warn", "never"], // enforce consistent spacing inside parentheses + "space-infix-ops": 1, // require spacing around operators + /* ES6 */ + "arrow-body-style": ["warn", "as-needed"], // require braces around arrow function bodies + "arrow-parens": ["warn", "as-needed"], // require parentheses around arrow function arguments + "arrow-spacing": 1, // enforce consistent spacing before and after the arrow in arrow functions + "no-useless-constructor": 1, // disallow unnecessary constructors + "object-shorthand": ["warn", "always", {"avoidQuotes": true}], // require or disallow method and property shorthand syntax for object literals + "prefer-arrow-callback": ["warn", {"allowNamedFunctions": true}], // require arrow functions as callbacks + "prefer-const": 1, // require const declarations for variables that are never reassigned after declared + "prefer-template": 1, // require template literals instead of string concatenation + "template-curly-spacing": ["warn", "never"] // require or disallow spacing around embedded expressions of template strings + }, + "root": true +} diff --git a/package.json b/package.json index db7a497..5ae7d09 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,8 @@ }, "scripts": { "start": ": ${NODE_ENV=development} && node index.js", - "test": ": ${NODE_ENV=development} && npm run test:jshint && npm run test:jscs && npm run test:unit && npm run test:integration", - "test:jshint": "jshint *.js src/**/*.js test/**/*.js", - "test:jscs": "jscs *.js src/**/*.js test/**/*.js", + "test": ": ${NODE_ENV=development} && npm run test:lint && npm run test:unit && npm run test:integration", + "test:lint": "eslint config src test *.js", "test:unit": "mocha --opts test/mocha.opts ./test/unit/", "test:integration": "mocha --opts test/mocha.opts ./test/integration", "release": "npm run release:install && npm run release:archive", @@ -37,8 +36,7 @@ "devDependencies": { "chai": "^4.1.1", "co-mocha": "^1.1.2", - "jscs": "^3.0.7", - "jshint": "^2.9.4", + "eslint": "^4.4.1", "mocha": "^3.2.0", "sinon": "^1.17.4", "supertest": "^3.0.0" diff --git a/test/.eslintrc b/test/.eslintrc new file mode 100644 index 0000000..4623dd0 --- /dev/null +++ b/test/.eslintrc @@ -0,0 +1,13 @@ +{ + "extends": "../.eslintrc", + "rules": { + "no-shadow": 1 + }, + "globals": { + "expect": true, + "sinon": true + }, + "env": { + "mocha": true + } +}