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

jfewjypa  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(222)

我正在尝试通过npm脚本运行一个npm包(Apollo Rover)。包本身的命令需要一个访问令牌,我不喜欢直接在package.json中使用它,所以想把它拉出来,并包含在一个不会被提交的.env中。
我尝试过使用cross-env和cross-env-shell,但是我的测试不起作用。
.环境

ACCESS_TOKEN="jdaksc8ds7vp98vwy8"

package.json

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

输出量

% npm run test

> test@0.0.1 test
> cross-env-shell "echo Hello $ACCESS_TOKEN"

Hello

我还需要在基于 *nix的系统和Windows上运行这个功能。

nxagd54h

nxagd54h1#

cross-env用于在运行节点命令时设置环境变量inline。在您的情况下,您已在.env文件中定义了变量,这是不同的。
当从.env文件填充环境变量时,您需要使用dotenv或类似命令。
在您的特定情况下,我可以推荐使用env-cmd-f选项作为更简单的选项。

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

mctunoxg2#

您需要正确地计算.env

{
  "scripts": {
    "test": "cross-env-shell \"echo Hello $(grep '^NODE_ENV' .env)\""
  }
}

相关问题