【发布时间】:2021-02-20 19:04:13
【问题描述】:
我有一个 Lerna monorepo,其中包含多个 CRA 应用程序和 Node.js 服务。 CRA 应用程序具有公共环境变量,因此我希望能够创建一个它们都共享的 .env 文件。
很遗憾,到目前为止我的两次尝试都失败了。
-
我想也许我可以将
dotenv添加到每个 CRA 应用程序中,并在每个应用程序的入口点使用dotenv.config({ path: '...' })。我很惊讶 env vars 都是未定义的,即使它们的前缀是REACT_APP_ -
我尝试通过将
react-scripts start命令更改为react-scripts start -r dotenv/config dotenv_config_path=/custom/path/to/your/env/vars来加载共享的.env。显然这不起作用,因为节点不执行 dotenv,但react-scripts没有我可以找到的使用文档,并且查看node_modules/react-scripts/scripts/start.js并没有提供传递参数的明显方式。
所以,我想我的问题是:我可以在多个 CRA 应用程序之间共享一个 .env 文件,而无需为每个应用程序手动弹出和设置 .env 路径吗?如果可能的话,我想避免这种情况。
谢谢!
--更新--
我在发布几分钟后找到了解决方案(对不起!)。
我能够安装 dotenv-cli 并将每个 CRA 应用的脚本更改为:
"scripts": {
"start": "dotenv -e ../../.env react-scripts start",
"build": "dotenv -e ../../.env react-scripts build",
"test": "dotenv -e ../../.env react-scripts test",
"eject": "react-scripts eject"
}
这具有在许多 CRA 应用程序之间共享单个 .env 的预期效果,但我不确定是否有更清洁/更好的方法。
【问题讨论】:
标签: reactjs create-react-app dotenv react-scripts