diff --git a/packages/react-scripts/config/env.js b/packages/react-scripts/config/env.js
index 66ba341b35..168e1e644f 100644
--- a/packages/react-scripts/config/env.js
+++ b/packages/react-scripts/config/env.js
@@ -15,25 +15,33 @@
var REACT_APP = /^REACT_APP_/i;
function getClientEnvironment(publicUrl) {
- var processEnv = Object
+ var raw = Object
.keys(process.env)
.filter(key => REACT_APP.test(key))
.reduce((env, key) => {
- env[key] = JSON.stringify(process.env[key]);
+ env[key] = process.env[key];
return env;
}, {
// Useful for determining whether we’re running in production mode.
// Most importantly, it switches React into the correct mode.
- 'NODE_ENV': JSON.stringify(
- process.env.NODE_ENV || 'development'
- ),
+ 'NODE_ENV': process.env.NODE_ENV || 'development',
// Useful for resolving the correct path to static assets in `public`.
// For example, .
// This should only be used as an escape hatch. Normally you would put
// images into the `src` and `import` them in code to get their paths.
- 'PUBLIC_URL': JSON.stringify(publicUrl)
+ 'PUBLIC_URL': publicUrl
});
- return {'process.env': processEnv};
+ // Stringify all values so we can feed into Webpack DefinePlugin
+ var stringified = {
+ 'process.env': Object
+ .keys(raw)
+ .reduce((env, key) => {
+ env[key] = JSON.stringify(raw[key]);
+ return env;
+ }, {})
+ };
+
+ return { raw, stringified };
}
module.exports = getClientEnvironment;
diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js
index 42a3019ff6..22a054c81b 100644
--- a/packages/react-scripts/config/webpack.config.dev.js
+++ b/packages/react-scripts/config/webpack.config.dev.js
@@ -190,12 +190,11 @@ module.exports = {
// We use PostCSS for autoprefixing only.
postcss: postcss,
plugins: [
- // Makes the public URL available as %PUBLIC_URL% in index.html, e.g.:
+ // Makes some environment variables available in index.html.
+ // The public URL is available as %PUBLIC_URL% in index.html, e.g.:
//
// In development, this will be an empty string.
- new InterpolateHtmlPlugin({
- PUBLIC_URL: publicUrl
- }),
+ new InterpolateHtmlPlugin(env.raw),
// Generates an `index.html` file with the