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

时间:2019-12-28 14:37:27

标签: reactjs yarn production

我的package.json具有以下脚本:

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

运行yarn build时出现以下错误:

sh: .env.: No such file or directory

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

2 个答案:

答案 0 :(得分:1)

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

export REACT_APP_HEADER_COLOR="#f66"

使用此新的shellscript代替旧的env文件:

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

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

为什么?

这就是外壳工作的方式。加载到当前shell中的环境变量(带有source.或赋值)仅在导出时传递给子级:

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

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

请注意,这些单行快捷方式还会自动/隐式导出:

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

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

答案 1 :(得分:0)

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

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

$ npm install -g serve

$ serve -s build