From 376a48fdcb08bfdf0500a7731283884c504e06dd Mon Sep 17 00:00:00 2001 From: Adam Miskiewicz Date: Mon, 8 Feb 2016 00:01:36 -0500 Subject: [PATCH 1/3] Move `react` to peerDependencies. --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e7040699e3704d..015b4673ce6338 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,9 @@ "bin": { "react-native": "local-cli/wrong-react-native.js" }, + "peerDependencies": { + "react": "^0.14.5" + }, "dependencies": { "absolute-path": "^0.0.0", "art": "^0.10.0", @@ -133,7 +136,6 @@ "optimist": "^0.6.1", "progress": "^1.1.8", "promise": "^7.1.1", - "react": "^0.14.5", "react-timer-mixin": "^0.13.2", "react-transform-hmr": "^1.0.2", "rebound": "^0.0.13", From 9343180a92d7846db59bde1f41bf1376e8d256e9 Mon Sep 17 00:00:00 2001 From: Adam Miskiewicz Date: Mon, 8 Feb 2016 00:02:12 -0500 Subject: [PATCH 2/3] Update local-cli to install react in order to satisfy peerDependency. --- local-cli/generator/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/local-cli/generator/index.js b/local-cli/generator/index.js index dadbd7a17c4335..90f08912a1df65 100644 --- a/local-cli/generator/index.js +++ b/local-cli/generator/index.js @@ -82,5 +82,13 @@ module.exports = yeoman.generators.NamedBase.extend({ {name: this.name} ); } + }, + + install: function() { + if (this.options.upgrade) { + return; + } + + this.npmInstall('react', { '--save': true }); } }); From 0956e8c86c0e78796826f4add7a9c02bd435a79c Mon Sep 17 00:00:00 2001 From: Adam Miskiewicz Date: Mon, 8 Feb 2016 00:27:18 -0500 Subject: [PATCH 3/3] Update 'react-native upgrade' to warn when 'react' is not found in a project's dependencies when the react-native version is >= 0.21.0. --- local-cli/upgrade/upgrade.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/local-cli/upgrade/upgrade.js b/local-cli/upgrade/upgrade.js index 4038bc6aaee4f4..4ce70498453207 100644 --- a/local-cli/upgrade/upgrade.js +++ b/local-cli/upgrade/upgrade.js @@ -44,6 +44,19 @@ module.exports = function upgrade(args, config) { 'https://github.com/facebook/react-native/releases/tag/v' + semver.major(v) + '.' + semver.minor(v) + '.0' ) ); + + // >= v0.21.0, we require react to be a peer depdendency + if (semver.gte(v, '0.21.0') && !pak.dependencies['react']) { + console.log( + chalk.yellow( + '\nYour \'package.json\' file doesn\'t seem to have \'react\' as a dependency.\n' + + '\'react\' was changed from a dependency to a peer dependency in react-native v0.21.0.\n' + + 'Therefore, it\'s necessary to include \'react\' in your project\'s dependencies.\n' + + 'Just run \'npm install --save react\', then re-run \'react-native upgrade\'.\n' + ) + ); + return Promise.resolve(); + } } else { console.log( chalk.yellow(