【问题标题】:Is there a way to share a single .env file for several Create-React-App apps in a monorepo?有没有办法在 monorepo 中为多个 Create-React-App 应用程序共享一个 .env 文件?
【发布时间】:2021-02-20 19:04:13
【问题描述】:

我有一个 Lerna monorepo,其中包含多个 CRA 应用程序和 Node.js 服务。 CRA 应用程序具有公共环境变量,因此我希望能够创建一个它们都共享的 .env 文件。

很遗憾,到目前为止我的两次尝试都失败了。

  1. 我想也许我可以将dotenv 添加到每个 CRA 应用程序中,并在每个应用程序的入口点使用 dotenv.config({ path: '...' })。我很惊讶 env vars 都是未定义的,即使它们的前缀是 REACT_APP_

  2. 我尝试通过将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


    【解决方案1】:

    作为一种选择,您可以考虑使用别名。意思是将您的.env 文件放入存储库的根目录并为每个包创建别名,例如ln -s [source] [destination](此示例适用于 MacOS,不确定其他操作系统)。

    【讨论】:

    • 这很好用,感谢您的好主意。
    • 伙计,我无话可说,这真是太棒了,超级谢谢你。
    猜你喜欢
    • 2020-05-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2022-01-20
    • 2019-07-06
    • 2021-09-10
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多