diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index c975a58c790..6268f3129ee 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -17,6 +17,7 @@ const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin'); const WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin'); const eslintFormatter = require('react-dev-utils/eslintFormatter'); const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin'); +const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin'); const getClientEnvironment = require('./env'); const paths = require('./paths'); @@ -290,6 +291,10 @@ module.exports = { // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack // You can remove this if you don't use Moment.js: new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + + // Warn about duplicate dependencies. + // See https://github.com/facebookincubator/create-react-app/issues/1844 + new DuplicatePackageCheckerPlugin({ strict: false }), ], // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. diff --git a/packages/react-scripts/config/webpack.config.prod.js b/packages/react-scripts/config/webpack.config.prod.js index 769016ed1b6..8313a8b46b0 100644 --- a/packages/react-scripts/config/webpack.config.prod.js +++ b/packages/react-scripts/config/webpack.config.prod.js @@ -19,6 +19,7 @@ const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin'); const SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin'); const eslintFormatter = require('react-dev-utils/eslintFormatter'); const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin'); +const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin'); const paths = require('./paths'); const getClientEnvironment = require('./env'); @@ -386,6 +387,10 @@ module.exports = { // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack // You can remove this if you don't use Moment.js: new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + + // Warn about duplicate dependencies. + // See https://github.com/facebookincubator/create-react-app/issues/1844 + new DuplicatePackageCheckerPlugin({ strict: false }), ], // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. diff --git a/packages/react-scripts/fixtures/kitchensink/.template.dependencies.json b/packages/react-scripts/fixtures/kitchensink/.template.dependencies.json index e4d3bec84f2..89c114e40d1 100644 --- a/packages/react-scripts/fixtures/kitchensink/.template.dependencies.json +++ b/packages/react-scripts/fixtures/kitchensink/.template.dependencies.json @@ -7,7 +7,7 @@ "jsdom": "9.8.3", "mocha": "3.2.0", "normalize.css": "7.0.0", - "prop-types": "15.5.6", + "prop-types": "^15.6.0", "test-integrity": "1.0.0" } } diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 84d0faf615e..e28bf92e3a0 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -34,6 +34,7 @@ "css-loader": "0.28.8", "dotenv": "4.0.0", "dotenv-expand": "4.0.1", + "duplicate-package-checker-webpack-plugin": "2.1.0", "eslint": "4.15.0", "eslint-config-react-app": "^2.1.0", "eslint-loader": "1.9.0",