Skip to content

Commit 64ffe23

Browse files
committed
[New] Support "detect" option for React version setting
1 parent 5dddbf4 commit 64ffe23

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

lib/util/version.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
'use strict';
66

7+
const resolve = require('resolve');
78
const log = require('./log');
89

910
let warnedForMissingVersion = false;
@@ -12,7 +13,23 @@ function getReactVersionFromContext(context) {
1213
let confVer = '999.999.999';
1314
// .eslintrc shared settings (http://eslint.org/docs/user-guide/configuring#adding-shared-settings)
1415
if (context.settings.react && context.settings.react.version) {
15-
confVer = context.settings.react.version;
16+
let settingsVer = context.settings.react.version;
17+
if (settingsVer === 'detect') {
18+
try {
19+
const reactPath = resolve.sync('react', {basedir: process.cwd()});
20+
const react = require(reactPath);
21+
settingsVer = react.version;
22+
} catch (e) {
23+
if (e.code === 'MODULE_NOT_FOUND') {
24+
log('Warning: React version was set to "detect" in eslint-plugin-react settings, ' +
25+
'but the "react" package is not installed. Assuming latest React version for linting.');
26+
settingsVer = '999.999.999';
27+
} else {
28+
throw e;
29+
}
30+
}
31+
}
32+
confVer = settingsVer;
1633
} else if (!warnedForMissingVersion) {
1734
log('Warning: React version not specified in eslint-plugin-react settings. ' +
1835
'See https://github.com/yannickcr/eslint-plugin-react#configuration.');

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"has": "^1.0.3",
3030
"jsx-ast-utils": "^2.0.1",
3131
"object.fromentries": "^2.0.0",
32-
"prop-types": "^15.6.2"
32+
"prop-types": "^15.6.2",
33+
"resolve": "^1.8.1"
3334
},
3435
"devDependencies": {
3536
"babel-eslint": "^8.2.5",

0 commit comments

Comments
 (0)