I'd like to use react.min.js
from a CDN in production (e.g. https://unpkg.com/react@15.3.1/dist/react.min.js)
What is the best way to get Webpack to transform my import React from 'react'
statements into const React = window.React
instead of building node_modules/react
into the bundle?
I've been doing it with resolve.alias
like this:
In index.html
:
<head>
<script type="text/javascript" src="https://unpkg.com/react@15.3.1/dist/react.min.js"></script>
<script type="text/javascript" src="/assets/bundle.js"></script>
</head>
In webpack.prod.config.js
:
alias: {
react$: './getWindowReact',
},
getWindowReact.js
:
module.exports = window.React;
Note: In the old question I didn't realize that building React into a Webpack bundle with NODE_ENV=production
would strip out the propTypes
checks. One of the answers focuses on that.
In your webpack config you can use the externals
option which will import the module from the environment instead of trying to resolve it normally:
// webpack.config.js
module.exports = {
externals: {
'react': 'React'
}
...
};
Read more here: https://webpack.js.org/configuration/externals/