Skip to content

Commit

Permalink
Build: ESLint setup improvements
Browse files Browse the repository at this point in the history
1. Use the short name of the preset in the config.
2. Run ESLint first on non-minified files.
3. Explicitly specify environments in every config file (those settings cascade
which means we've been assuming a Node.js environment where we shouldn't have).
  • Loading branch information
mgol committed Dec 19, 2016
1 parent 5d79c64 commit cbc8638
Show file tree
Hide file tree
Showing 9 changed files with 88 additions and 36 deletions.
31 changes: 31 additions & 0 deletions .eslintrc-browser.json
@@ -0,0 +1,31 @@
{
"root": true,

"extends": "jquery",

// Support: IE <=9 only, Android <=4.0 only
// The above browsers are failing a lot of tests in the ES5
// test suite at http://test262.ecmascript.org.
"parserOptions": {
"ecmaVersion": 3
},

// The browser env is not enabled on purpose so that code takes
// all browser-only globals from window instead of assuming
// they're available as globals. This makes it possible to use
// jQuery with tools like jsdom which provide a custom window
// implementation.
"env": {},

"globals": {
"window": true,
"jQuery": true,
"define": true,
"module": true,
"noGlobal": true
},

"rules": {
"strict": ["error", "function"]
}
}
13 changes: 13 additions & 0 deletions .eslintrc-node.json
@@ -0,0 +1,13 @@
{
"root": true,

"extends": "jquery",

"parserOptions": {
"ecmaVersion": 5
},

"env": {
"node": true
}
}
6 changes: 2 additions & 4 deletions .eslintrc.json
@@ -1,7 +1,5 @@
{
"extends": "eslint-config-jquery",
"root": true,
"env": {
"node": true
}

"extends": "./.eslintrc-node.json"
}
13 changes: 11 additions & 2 deletions Gruntfile.js
Expand Up @@ -203,12 +203,21 @@ module.exports = function( grunt ) {

grunt.registerTask( "lint", [
"jsonlint",
runIfNewNode( "eslint" )

// Running the full eslint task without breaking it down to targets
// would run the dist target first which would point to errors in the built
// file, making it harder to fix them. We want to check the built file only
// if we already know the source files pass the linter.
runIfNewNode( "eslint:dev" ),
runIfNewNode( "eslint:dist" )
] );

grunt.registerTask( "lint:newer", [
"newer:jsonlint",
runIfNewNode( "newer:eslint" )

// Don't replace it with just the task; see the above comment.
runIfNewNode( "newer:eslint:dev" ),
runIfNewNode( "newer:eslint:dist" )
] );

grunt.registerTask( "test:fast", runIfNewNode( "node_smoke_tests" ) );
Expand Down
5 changes: 4 additions & 1 deletion dist/.eslintrc.json
@@ -1,5 +1,8 @@
{
"extends": "../src/.eslintrc.json",
"root": true,

"extends": "../.eslintrc-browser.json",

"rules": {
// That is okay for the built version
"no-multiple-empty-lines": "off",
Expand Down
19 changes: 3 additions & 16 deletions src/.eslintrc.json
@@ -1,18 +1,5 @@
{
// Support: IE <=9 only, Android <=4.0 only
// The above browsers are failing a lot of tests in the ES5
// test suite at http://test262.ecmascript.org.
"parserOptions": {
"ecmaVersion": 3
},
"globals": {
"window": true,
"jQuery": true,
"define": true,
"module": true,
"noGlobal": true
},
"rules": {
"strict": ["error", "function"]
}
"root": true,

"extends": "../.eslintrc-browser.json"
}
20 changes: 12 additions & 8 deletions test/.eslintrc.json
@@ -1,13 +1,15 @@
{
"root": true,

"extends": "../.eslintrc-browser.json",

"env": {

// In source the browser env is not enabled but unit tests rely on them
// too much and we don't run them in non-browser environments anyway.
"browser": true
},
// Support: IE <=9 only, Android <=4.0 only
// The above browsers are failing a lot of tests in the ES5
// test suite at http://test262.ecmascript.org.
"parserOptions": {
"ecmaVersion": 3
},

"globals": {
"require": false,
"define": false,
Expand Down Expand Up @@ -41,17 +43,19 @@
"baseURL": true,
"externalHost": true
},

"rules": {
// See https://github.com/eslint/eslint/issues/2342
"no-unused-vars": "off",

// Too much errors
// Too many errors
"max-len": "off",
"brace-style": "off",
"key-spacing": "off",
"camelcase": "off",
"strict": "off",

// Not really too much - waiting autofix features for these rules
// Not really too many - waiting for autofix features for these rules
"lines-around-comment": "off",
"dot-notation": "off"
}
Expand Down
12 changes: 9 additions & 3 deletions test/node_smoke_tests/.eslintrc.json
@@ -1,7 +1,13 @@
{
"root": true,

"extends": "../../.eslintrc-node.json",

"parserOptions": {
"ecmaVersion": 2015
},

"env": {
"es6": true
},
"extends" : "../../.eslintrc.json",
"root": true
}
}
5 changes: 3 additions & 2 deletions test/promises_aplus_adapters/.eslintrc.json
@@ -1,4 +1,5 @@
{
"extends": "../../.eslintrc.json",
"root": true
"root": true,

"extends": "../../.eslintrc-node.json"
}

0 comments on commit cbc8638

Please sign in to comment.