如何 运行 在本地构建我的 React 应用程序的生产版本?

How to run a production build of my react app locally?

我的 package.json 有以下脚本:

"build": "sh -ac '. .env.${REACT_APP_ENV}; react-scripts build'"

当我 运行 yarn build 我得到以下错误:

sh: .env.: No such file or directory

.env 文件如预期的那样位于我的项目目录的顶层。有任何想法吗?

您也可以使用 NODE_ENV 变量,它会为您提供环境模式。

我不知道你是否在使用 create-react-app,但如果你是(一旦你构建了你的应用程序),你可以使用 serve 到 运行 生产版本:

$ npm install -g serve

$ serve -s build

.env.foo 复制或重命名为 .env.foo.sh 并在每行的开头添加 export,如下所示:

export REACT_APP_HEADER_COLOR="#f66"

获取这个新的 shell 脚本而不是旧的 env 文件:

"sh -ac '. .env.${REACT_APP_ENV}.sh; react-scripts build'"

现在变量将成功传递给构建过程,供其使用。

为什么?

这就是 shell 的工作方式。加载到当前 shell 的环境变量(使用 source. 或赋值)仅传递给子项,如果它被导出:

$ FOO=foo
$ sh -c 'echo $FOO'

$ export FOO=foo
$ sh -c 'echo $FOO'
foo

请注意,这些单行快捷方式还导出 automatically/implicitly:

$ BAR=bar sh -c 'echo $BAR'
bar
$ env BAR=baz sh -c 'echo $BAR'
baz

(我怀疑这种隐藏行为经常引起混淆。)