【问题标题】:Sharing config variables across projects in a monorepo using yarn workspaces?使用纱线工作区在monorepo中跨项目共享配置变量?
【发布时间】:2018-08-31 04:53:25
【问题描述】:
是否可以在使用 yarn 工作区设置的 monorepo 的子文件夹之间共享配置变量/环境变量?我们有一个项目的 monorepo,其中几个子文件夹是使用 create-react-app 构建的项目。在这些单独的文件夹中,我们可以使用 .env 文件来指定配置值,当我们在单独级别使用 package.jsons 中的构建/启动脚本时,它们会很好地使用。
但是,我们还有其他子文件夹,它们只是导入 CRA 应用程序的库。我们想在这些库中指定 config/env 变量,但到目前为止还没有找到一种方法来在我们构建或启动导入库的项目时传播这些值。尝试了库本身以及 CRA 应用根文件夹中的 .env 文件,但似乎没有任何效果...
【问题讨论】:
标签:
yarnpkg
monorepo
yarn-workspaces
【解决方案1】:
考虑从.env 读取的含义,因为这可能会对第三方库和依赖于process.env 产生不利影响。
您可以使用 https://github.com/motdotla/dotenv 之类的库来执行此操作:
- 在您的库中设置
.env.file 文件:
- src
- index.js
- .env.file
- 在 lib index.js 文件中:
import dotenv from 'dotenv'
import path from 'path'
dotenv.config({
path: path.join(__dirname,'..','.env.file'),
})
// the rest of the file...
【解决方案2】:
您可以使用find-yarn-workspace-root 找到您的存储库的根目录。
import workspacesRoot from "find-yarn-workspace-root";
import { config as dotenv } from "dotenv";
const rootDirectory = workspacesRoot();
dotenv({ path: `${rootDirectory}/.env` });