diff --git a/generator/index.js b/generator/index.js index dadbd7a17..90f08912a 100644 --- a/generator/index.js +++ b/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 }); } }); diff --git a/upgrade/upgrade.js b/upgrade/upgrade.js index 4038bc6aa..4ce704984 100644 --- a/upgrade/upgrade.js +++ b/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(