diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..ea4c27c --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +pjax.js +node_modules/** +pjax.min.js +*.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..6489d6a --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": ["eslint-config-i-am-meticulous/es5"], + "rules": { + "import/order": "off", + "import/max-dependencies": "off", + "import/extensions": ["error", "never"] + } +} diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index 27bc03b..0000000 --- a/.jscsrc +++ /dev/null @@ -1,132 +0,0 @@ -{ - "excludeFiles": [ - "node_modules/**", - "pjax.js", - "pjax.min.js" - ], - "fileExtensions": [ - ".js" - ], - "requireCurlyBraces": [ - "if", - "else", - "for", - "while", - "do", - "try", - "catch" - ], - "requireSpaceAfterKeywords": [ - "if", - "else", - "for", - "while", - "do", - "switch", - "return", - "try", - "catch" - ], - "requireSpaceBeforeBlockStatements": true, - "requireParenthesesAroundIIFE": true, - "requireSpacesInConditionalExpression": { - "afterTest": true, - "beforeConsequent": true, - "afterConsequent": true, - "beforeAlternate": true - }, - "requireSpacesInFunctionExpression": { - "beforeOpeningCurlyBrace": true - }, - "disallowSpacesInFunctionExpression": { - "beforeOpeningRoundBrace": true - }, - "disallowMultipleVarDecl": true, - "requireBlocksOnNewline": 1, - "disallowPaddingNewlinesInBlocks": true, - "disallowEmptyBlocks": true, - "disallowSpacesInsideObjectBrackets": true, - "disallowSpacesInsideArrayBrackets": true, - "disallowSpacesInsideParentheses": true, - "disallowQuotedKeysInObjects": "allButReserved", - "disallowSpaceAfterObjectKeys": true, - "requireCommaBeforeLineBreak": true, - "requireOperatorBeforeLineBreak": [ - "?", - "+", - "-", - "/", - "*", - "=", - "==", - "===", - "!=", - "!==", - ">", - ">=", - "<", - "<=" - ], - "disallowSpaceAfterPrefixUnaryOperators": [ - "++", - "--", - "+", - "-", - "~", - "!" - ], - "disallowSpaceBeforePostfixUnaryOperators": [ - "++", - "--" - ], - "requireSpaceBeforeBinaryOperators": [ - "+", - "-", - "/", - "*", - "=", - "==", - "===", - "!=", - "!==" - ], - "requireSpaceAfterBinaryOperators": [ - "+", - "-", - "/", - "*", - "=", - "==", - "===", - "!=", - "!==" - ], - "disallowImplicitTypeConversion": [ - "numeric", - "boolean", - "binary", - "string" - ], - "requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties", - "disallowKeywords": [ - "with" - ], - "disallowMultipleLineStrings": true, - "validateQuoteMarks": "\"", - "validateIndentation": 2, - "disallowMixedSpacesAndTabs": true, - "disallowTrailingWhitespace": true, - "requireKeywordsOnNewLine": [ - "else" - ], - "requireLineFeedAtFileEnd": true, - "requireCapitalizedConstructors": true, - "safeContextKeyword": "that", - "requireDotNotation": true, - "jsDoc": { - "checkParamNames": true, - "checkRedundantParams": true, - "requireParamTypes": true - }, - "requireSpaceAfterLineComment": true -} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 9f268f7..0000000 --- a/.jshintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "newcap": false, - "undef": true, - "unused": true, - "asi": true, - "esnext": true, - "node": true, - "browser": true -} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ea4c27c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +pjax.js +node_modules/** +pjax.min.js +*.json diff --git a/package.json b/package.json index 8e85f68..1c363d3 100644 --- a/package.json +++ b/package.json @@ -28,13 +28,16 @@ "types": "index.d.ts", "devDependencies": { "browserify": "^15.0.0", - "jscs": "^3.0.7", + "eslint": "^5.7.0", + "eslint-config-i-am-meticulous": "^11.0.0", + "husky": "^1.2.0", "jsdom": "^11.5.1", "jsdom-global": "^3.0.2", - "jshint": "^2.5.6", + "lint-staged": "^8.1.0", "npmpub": "^3.1.0", "nyc": "^11.4.1", "opn-cli": "^3.1.0", + "prettier": "^1.14.3", "serve": "^6.4.4", "tap-nyc": "^1.0.3", "tap-spec": "^4.1.1", @@ -42,7 +45,7 @@ "uglify-js": "^3.3.8" }, "scripts": { - "lint": "jscs . && jshint . --exclude-path .gitignore", + "lint": "eslint **/*.js", "standalone": "browserify index.js --standalone Pjax > pjax.js", "build": "npm run standalone && uglifyjs pjax.js -o pjax.min.js", "build-debug": "browserify index.js --debug --standalone Pjax > pjax.js", @@ -53,5 +56,17 @@ "example": "opn http://localhost:3000/example/ && serve -p 3000 .", "prepublish": "npm run build", "release": "npmpub" + }, + "husky": { + "hooks": { + "pre-commit": "npm test && lint-staged" + } + }, + "lint-staged": { + "*.js": [ + "eslint --fix **/*.js", + "prettier --write", + "git add" + ] } }