如何 运行 在本地构建我的 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
(我怀疑这种隐藏行为经常引起混淆。)
我的 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
(我怀疑这种隐藏行为经常引起混淆。)