From 6523aaa541c4d35d4a47137a50e648aec266eb04 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Fri, 19 May 2017 07:26:28 -0400 Subject: [PATCH 1/2] Fix dependency cycle --- packages/react-scripts/config/env.js | 35 ++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/packages/react-scripts/config/env.js b/packages/react-scripts/config/env.js index 4213adf69a2..8fbc75f1102 100644 --- a/packages/react-scripts/config/env.js +++ b/packages/react-scripts/config/env.js @@ -11,7 +11,7 @@ 'use strict'; const fs = require('fs'); -const paths = require('./paths'); +const path = require('path'); const NODE_ENV = process.env.NODE_ENV; if (!NODE_ENV) { @@ -20,12 +20,37 @@ if (!NODE_ENV) { ); } +// Make sure any symlinks in the project folder are resolved: +// https://github.com/facebookincubator/create-react-app/issues/637 +const appDirectory = fs.realpathSync(process.cwd()); +const resolveApp = relativePath => path.resolve(appDirectory, relativePath); + +let dotenvPath = resolveApp('.env'); + +// @remove-on-eject-begin +const resolveOwn = relativePath => path.resolve(__dirname, '..', relativePath); + +const ownPackageJson = require('../package.json'); +const reactScriptsPath = resolveApp(`node_modules/${ownPackageJson.name}`); +const reactScriptsLinked = fs.existsSync(reactScriptsPath) && + fs.lstatSync(reactScriptsPath).isSymbolicLink(); + +// config before publish: we're in ./packages/react-scripts/config/ +if ( + !reactScriptsLinked && + __dirname.indexOf(path.join('packages', 'react-scripts', 'config')) !== -1 +) { + dotenvPath = resolveOwn('template/.env'); +} + +// @remove-on-eject-end + // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use var dotenvFiles = [ - `${paths.dotenv}.${NODE_ENV}.local`, - `${paths.dotenv}.${NODE_ENV}`, - `${paths.dotenv}.local`, - paths.dotenv, + `${dotenvPath}.${NODE_ENV}.local`, + `${dotenvPath}.${NODE_ENV}`, + `${dotenvPath}.local`, + dotenvPath, ]; // Load environment variables from .env* files. Suppress warnings using silent // if this file is missing. dotenv will never modify any environment variables From 2a63f306b91a3609877e3905f21a15624e7f209e Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Fri, 19 May 2017 07:29:01 -0400 Subject: [PATCH 2/2] Add a note --- packages/react-scripts/config/env.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-scripts/config/env.js b/packages/react-scripts/config/env.js index 8fbc75f1102..d29e1a97f7d 100644 --- a/packages/react-scripts/config/env.js +++ b/packages/react-scripts/config/env.js @@ -28,6 +28,7 @@ const resolveApp = relativePath => path.resolve(appDirectory, relativePath); let dotenvPath = resolveApp('.env'); // @remove-on-eject-begin +// NOTE: Keep this in sync with paths.js const resolveOwn = relativePath => path.resolve(__dirname, '..', relativePath); const ownPackageJson = require('../package.json'); @@ -42,7 +43,6 @@ if ( ) { dotenvPath = resolveOwn('template/.env'); } - // @remove-on-eject-end // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use