使用纱线工作区在monorepo中跨项目共享配置变量?

Posted

技术标签:

【中文标题】使用纱线工作区在monorepo中跨项目共享配置变量?【英文标题】:Sharing config variables across projects in a monorepo using yarn workspaces? 【发布时间】:2018-08-31 04:53:25 【问题描述】:

是否可以在使用 yarn 工作区设置的 monorepo 的子文件夹之间共享配置变量/环境变量?我们有一个项目的 monorepo,其中几个子文件夹是使用 create-react-app 构建的项目。在这些单独的文件夹中,我们可以使用 .env 文件来指定配置值,当我们在单独级别使用 package.jsons 中的构建/启动脚本时,它们会很好地使用。

但是,我们还有其他子文件夹,它们只是导入 CRA 应用程序的库。我们想在这些库中指定 config/env 变量,但到目前为止还没有找到一种方法来在我们构建或启动导入库的项目时传播这些值。尝试了库本身以及 CRA 应用根文件夹中的 .env 文件,但似乎没有任何效果...

【问题讨论】:

【参考方案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` );

【讨论】:

以上是关于使用纱线工作区在monorepo中跨项目共享配置变量?的主要内容,如果未能解决你的问题,请参考以下文章

无法在纱线工作区 monorepo 中添加包

如何在具有纱线工作空间的 monorepo 中从 nodejs 项目构建 docker 映像

React Monorepo 纱线工作区 + 打字稿 + 绝对导入

Github 操作似乎无法在带有纱线工作区和 lerna 的 monorepo 中找到私有包

monorepo Yarn 工作区 - 共享 esLint 和 Prettier 配置

如何从纱线工作区中删除 CRA?