mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
Refactor ESLint configuration to enable better IDE integration (#13914)
* Refactor ESLint configuration to enable better IDE integration * Minor tweaks
This commit is contained in:
parent
051272f201
commit
3d8bda70e5
48
.eslintrc.js
48
.eslintrc.js
|
|
@ -1,5 +1,10 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const {
|
||||||
|
es5Paths,
|
||||||
|
esNextPaths,
|
||||||
|
} = require('./scripts/shared/pathsByLanguageVersion');
|
||||||
|
|
||||||
const OFF = 0;
|
const OFF = 0;
|
||||||
const ERROR = 2;
|
const ERROR = 2;
|
||||||
|
|
||||||
|
|
@ -16,6 +21,15 @@ module.exports = {
|
||||||
'react-internal',
|
'react-internal',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
parser: 'espree',
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2017,
|
||||||
|
sourceType: 'script',
|
||||||
|
ecmaFeatures: {
|
||||||
|
experimentalObjectRestSpread: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
// We're stricter than the default config, mostly. We'll override a few rules
|
// We're stricter than the default config, mostly. We'll override a few rules
|
||||||
// and then enable some React specific ones.
|
// and then enable some React specific ones.
|
||||||
rules: {
|
rules: {
|
||||||
|
|
@ -44,6 +58,13 @@ module.exports = {
|
||||||
'space-before-function-paren': OFF,
|
'space-before-function-paren': OFF,
|
||||||
'valid-typeof': [ERROR, {requireStringLiterals: true}],
|
'valid-typeof': [ERROR, {requireStringLiterals: true}],
|
||||||
|
|
||||||
|
// We apply these settings to files that should run on Node.
|
||||||
|
// They can't use JSX or ES6 modules, and must be in strict mode.
|
||||||
|
// They can, however, use other ES6 features.
|
||||||
|
// (Note these rules are overridden later for source files.)
|
||||||
|
'no-var': ERROR,
|
||||||
|
strict: ERROR,
|
||||||
|
|
||||||
// React & JSX
|
// React & JSX
|
||||||
// Our transforms set this automatically
|
// Our transforms set this automatically
|
||||||
'react/jsx-boolean-value': [ERROR, 'always'],
|
'react/jsx-boolean-value': [ERROR, 'always'],
|
||||||
|
|
@ -71,6 +92,33 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
overrides: [
|
overrides: [
|
||||||
|
{
|
||||||
|
// We apply these settings to files that we ship through npm.
|
||||||
|
// They must be ES5.
|
||||||
|
files: es5Paths,
|
||||||
|
parser: 'espree',
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 5,
|
||||||
|
sourceType: 'script',
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-var': OFF,
|
||||||
|
strict: ERROR,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// We apply these settings to the source files that get compiled.
|
||||||
|
// They can use all features including JSX (but shouldn't use `var`).
|
||||||
|
files: esNextPaths,
|
||||||
|
parser: 'babel-eslint',
|
||||||
|
parserOptions: {
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-var': ERROR,
|
||||||
|
strict: OFF,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
files: ['**/__tests__/*.js'],
|
files: ['**/__tests__/*.js'],
|
||||||
rules: {
|
rules: {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
(function(global, factory) {
|
(function(global, factory) {
|
||||||
|
// eslint-disable-next-line no-unused-expressions
|
||||||
typeof exports === 'object' && typeof module !== 'undefined'
|
typeof exports === 'object' && typeof module !== 'undefined'
|
||||||
? (module.exports = factory(require('react')))
|
? (module.exports = factory(require('react')))
|
||||||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
: typeof define === 'function' && define.amd // eslint-disable-line no-undef
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const eslintrc = require('../../.eslintrc');
|
|
||||||
|
|
||||||
const ERROR = 2;
|
|
||||||
|
|
||||||
// We apply these settings to files that should run on Node.
|
|
||||||
// They can't use JSX or ES6 modules, and must be in strict mode.
|
|
||||||
// They can, however, use other ES6 features.
|
|
||||||
|
|
||||||
module.exports = Object.assign({}, eslintrc, {
|
|
||||||
parser: 'espree',
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 2017,
|
|
||||||
sourceType: 'script',
|
|
||||||
ecmaFeatures: {
|
|
||||||
experimentalObjectRestSpread: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rules: Object.assign({}, eslintrc.rules, {
|
|
||||||
'no-var': ERROR,
|
|
||||||
strict: ERROR,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const eslintrc = require('../../.eslintrc');
|
|
||||||
|
|
||||||
const ERROR = 2;
|
|
||||||
|
|
||||||
// We apply these settings to files that we ship through npm.
|
|
||||||
// They must be ES5.
|
|
||||||
|
|
||||||
module.exports = Object.assign({}, eslintrc, {
|
|
||||||
parser: 'espree',
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 5,
|
|
||||||
sourceType: 'script',
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
strict: ERROR,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const eslintrc = require('../../.eslintrc');
|
|
||||||
|
|
||||||
const ERROR = 2;
|
|
||||||
|
|
||||||
// We apply these settings to the source files that get compiled.
|
|
||||||
// They can use all features including JSX (but shouldn't use `var`).
|
|
||||||
|
|
||||||
module.exports = Object.assign({}, eslintrc, {
|
|
||||||
rules: Object.assign({}, eslintrc.rules, {
|
|
||||||
'no-var': ERROR,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
const minimatch = require('minimatch');
|
const minimatch = require('minimatch');
|
||||||
const CLIEngine = require('eslint').CLIEngine;
|
const CLIEngine = require('eslint').CLIEngine;
|
||||||
const listChangedFiles = require('../shared/listChangedFiles');
|
const listChangedFiles = require('../shared/listChangedFiles');
|
||||||
const {es5Paths, esNextPaths} = require('../shared/pathsByLanguageVersion');
|
|
||||||
|
|
||||||
const allPaths = ['**/*.js'];
|
const allPaths = ['**/*.js'];
|
||||||
|
|
||||||
|
|
@ -65,25 +64,10 @@ function runESLint({onlyChanged}) {
|
||||||
if (typeof onlyChanged !== 'boolean') {
|
if (typeof onlyChanged !== 'boolean') {
|
||||||
throw new Error('Pass options.onlyChanged as a boolean.');
|
throw new Error('Pass options.onlyChanged as a boolean.');
|
||||||
}
|
}
|
||||||
let errorCount = 0;
|
const {errorCount, warningCount, output} = runESLintOnFilesWithOptions(
|
||||||
let warningCount = 0;
|
allPaths,
|
||||||
let output = '';
|
onlyChanged
|
||||||
[
|
);
|
||||||
runESLintOnFilesWithOptions(allPaths, onlyChanged, {
|
|
||||||
configFile: `${__dirname}/eslintrc.default.js`,
|
|
||||||
ignorePattern: [...es5Paths, ...esNextPaths],
|
|
||||||
}),
|
|
||||||
runESLintOnFilesWithOptions(esNextPaths, onlyChanged, {
|
|
||||||
configFile: `${__dirname}/eslintrc.esnext.js`,
|
|
||||||
}),
|
|
||||||
runESLintOnFilesWithOptions(es5Paths, onlyChanged, {
|
|
||||||
configFile: `${__dirname}/eslintrc.es5.js`,
|
|
||||||
}),
|
|
||||||
].forEach(result => {
|
|
||||||
errorCount += result.errorCount;
|
|
||||||
warningCount += result.warningCount;
|
|
||||||
output += result.output;
|
|
||||||
});
|
|
||||||
console.log(output);
|
console.log(output);
|
||||||
return errorCount === 0 && warningCount === 0;
|
return errorCount === 0 && warningCount === 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user