如何在 NPM 脚本中使用 .env 中的环境变量?

问题描述 投票:0回答:2

我正在尝试通过 npm 脚本运行 npm 包(Apollo Rover)。包本身的命令需要一个访问令牌,我不习惯将其直接放在 package.json 中,因此想将其取出并将其包含在不会提交的 .env 中。

我尝试过使用 cross-env 和 cross-env-shell,但我的测试不起作用。

.env

ACCESS_TOKEN="jdaksc8ds7vp98vwy8"

package.json

{
  "scripts": {
    "test": "cross-env-shell \"echo Hello $ACCESS_TOKEN\""
  }
}

输出

% npm run test

> [email protected] test
> cross-env-shell "echo Hello $ACCESS_TOKEN"

Hello

我是否缺少某些功能来提供此功能?我还需要它在基于 *nix 的系统和 Windows 上运行。

javascript npm environment-variables package.json
2个回答
0
投票

cross-env用于在运行节点命令时设置环境变量inline。在您的情况下,您已在不同的

.env
文件中定义了变量。

.env
文件填充环境变量时,您需要使用 dotenv 或类似工具。

在您的具体情况下,我可以建议使用 env-cmd

-f
选项作为更简单的选项。

{
  "scripts": {
    "test": "env-cmd -f ./custom/path/.env \"echo Hello $ACCESS_TOKEN\""
  }
}


-1
投票

您需要正确评估

.env

{
  "scripts": {
    "test": "cross-env-shell \"echo Hello $(grep '^NODE_ENV' .env)\""
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.