如何从.yarnrc.yaml访问.env中声明的环境变量?
解决BUF_REGISTRY_TOKEN变量访问问题
Yarn 3 不会自动读取项目根目录的 .env 文件,所以你需要手动让环境变量生效,以下是几种可行方案:
方案一:使用dotenv-cli加载.env后执行命令
- 全局安装dotenv-cli:
npm install -g dotenv-cli
或者用Yarn本地安装:
yarn add -D dotenv-cli
- 执行安装命令时通过dotenv-cli加载.env:
dotenv -e .env yarn install
方案二:手动在shell中导出变量
在执行yarn install前,先导出环境变量:
export BUF_REGISTRY_TOKEN=ZZZZZZZ yarn install
如果是Windows cmd环境,使用:
set BUF_REGISTRY_TOKEN=ZZZZZZZ yarn install
PowerShell环境则使用:
$env:BUF_REGISTRY_TOKEN="ZZZZZZZ" yarn install
方案三:在package.json中添加脚本
在项目的package.json里添加一个封装好的安装脚本,自动加载.env:
{ "scripts": { "install:buf": "dotenv -e .env yarn install" } }
之后执行:
yarn install:buf
额外注意:修正.yarnrc.yaml语法错误
你的.yarnrc.yaml中plugins部分存在缩进问题,第二个插件的配置没有正确嵌套,修正后如下:
nodeLinker: node-modules plugins: - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs spec: "@yarnpkg/plugin-workspace-tools" - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs spec: "@yarnpkg/plugin-typescript" npmScopes: buf: npmAuthToken: ${BUF_REGISTRY_TOKEN} npmRegistryServer: "https://buf.build/gen/npm/v1/" yarnPath: .yarn/releases/yarn-3.6.1.cjs
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

