Skip to content

Commit 64b9ef5

Browse files
committed
[New] Support "detect" option for React version setting
1 parent 95d3c3f commit 64b9ef5

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
@@ -28,7 +28,8 @@
2828
"doctrine": "^2.1.0",
2929
"has": "^1.0.3",
3030
"jsx-ast-utils": "^2.0.1",
31-
"prop-types": "^15.6.2"
31+
"prop-types": "^15.6.2",
32+
"resolve": "^1.8.1"
3233
},
3334
"devDependencies": {
3435
"babel-eslint": "^8.2.5",

0 commit comments

Comments
 (0)