11import fs from 'fs' ;
2- import path from 'path' ;
32import dotenv from 'dotenv' ;
43import dotenvExpand from 'dotenv-expand' ;
54
65import paths from './paths.js' ;
76import { require } from './util.js' ;
87
9- // Make sure that including paths.js after env.js will read .env variables.
108delete require . cache [ require . resolve ( './paths' ) ] ;
119
1210const { NODE_ENV } = process . env ;
1311if ( ! NODE_ENV ) {
1412 throw new Error ( 'The NODE_ENV environment variable is required but was not specified.' ) ;
1513}
1614
17- // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
1815const dotenvFiles = [
1916 `${ paths . dotenv } .${ NODE_ENV } .local` ,
20- // Don't include `.env.local` for `test` environment
21- // since normally you expect tests to produce the same
22- // results for everyone
2317 NODE_ENV !== 'test' && `${ paths . dotenv } .local` ,
2418 `${ paths . dotenv } .${ NODE_ENV } ` ,
2519 paths . dotenv ,
2620] . filter ( Boolean ) ;
2721
28- // Load environment variables from .env* files. Suppress warnings using silent
29- // if this file is missing. dotenv will never modify any environment variables
30- // that have already been set. Variable expansion is supported in .env files.
31- // https://github.com/motdotla/dotenv
32- // https://github.com/motdotla/dotenv-expand
3322dotenvFiles . forEach ( ( dotenvFile ) => {
3423 if ( fs . existsSync ( dotenvFile ) ) {
3524 dotenvExpand (
@@ -40,24 +29,6 @@ dotenvFiles.forEach((dotenvFile) => {
4029 }
4130} ) ;
4231
43- // We support resolving modules according to `NODE_PATH`.
44- // This lets you use absolute paths in imports inside large monorepos:
45- // https://github.com/facebook/create-react-app/issues/253.
46- // It works similar to `NODE_PATH` in Node itself:
47- // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
48- // Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
49- // Otherwise, we risk importing Node.js core modules into an app instead of webpack shims.
50- // https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
51- // We also resolve them to make sure all tools using them work consistently.
52- const appDirectory = fs . realpathSync ( process . cwd ( ) ) ;
53- process . env . NODE_PATH = ( process . env . NODE_PATH || '' )
54- . split ( path . delimiter )
55- . filter ( ( folder ) => folder && ! path . isAbsolute ( folder ) )
56- . map ( ( folder ) => path . resolve ( appDirectory , folder ) )
57- . join ( path . delimiter ) ;
58-
59- // Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
60- // injected into the application via DefinePlugin in webpack configuration.
6132const REACT_APP = / ^ R E A C T _ A P P _ / i;
6233
6334function getClientEnvironment ( publicUrl ) {
@@ -71,28 +42,11 @@ function getClientEnvironment(publicUrl) {
7142 } ;
7243 } ,
7344 {
74- // Useful for determining whether we're running in production mode.
75- // Most importantly, it switches React into the correct mode.
7645 NODE_ENV : process . env . NODE_ENV || 'development' ,
77- // Useful for resolving the correct path to static assets in `public`.
78- // For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.
79- // This should only be used as an escape hatch. Normally you would put
80- // images into the `src` and `import` them in code to get their paths.
8146 PUBLIC_URL : publicUrl ,
82- // We support configuring the sockjs pathname during development.
83- // These settings let a developer run multiple simultaneous projects.
84- // They are used as the connection `hostname`, `pathname` and `port`
85- // in webpackHotDevClient. They are used as the `sockHost`, `sockPath`
86- // and `sockPort` options in webpack-dev-server.
87- WDS_SOCKET_HOST : process . env . WDS_SOCKET_HOST ,
88- WDS_SOCKET_PATH : process . env . WDS_SOCKET_PATH ,
89- WDS_SOCKET_PORT : process . env . WDS_SOCKET_PORT ,
90- // Whether or not react-refresh is enabled.
91- // It is defined here so it is available in the webpackHotDevClient.
9247 FAST_REFRESH : process . env . FAST_REFRESH !== 'false' ,
9348 }
9449 ) ;
95- // Stringify all values so we can feed into webpack DefinePlugin
9650 const stringified = {
9751 'process.env' : Object . keys ( raw ) . reduce ( ( env , key ) => {
9852 return { ...env , [ key ] : JSON . stringify ( raw [ key ] ) } ;
0 commit comments