加载本地环境变量以用于NPM脚本

时间:2019-05-16 12:32:24

标签: javascript npm environment-variables environment package.json

我有一个NPM脚本,如下所示:

"start": "server start --host $DEV_HOST"

还有许多其他脚本也引用了$DEV_HOST环境。

当前$DEV_HOST已导出到我的~/.bashrc中,但是我想找到一种在项目中本地定义它的方法,例如在.env文件中。

我想知道npm是否提供了一个preall钩子,该钩子将允许调用一个可以在本地envs中加载的简单bash文件,但是不存在这样的钩子。

NPM似乎也没有为本地环境提供任何加载机制。

我目前唯一想到的解决方案是:

  1. 将需要本地env的所有脚本移动到自己的bash文件中,并在每个文件中加载.env文件。

  2. 在需要从.env文件加载到envs中的每个需要本地env的脚本之前,调用一个单独的脚本。

这两种方法看上去都不必要地麻烦,而且缩放性也不佳。

是否可以加载项目本地文件中定义的env,以便可以在NPM脚本中使用它们?

注意:我不是在问如何将envs加载到应用程序中。我在问如何使nv脚本可以使用env。这两件事完全不同。 Dot-env将envs添加到当前进程。即使您创建了使用dot-env加载某些env的节点脚本,这些env也不会通过$变量提供,因为它们没有加载到环境中。它们只能通过process.env在同一进程中使用。

1 个答案:

答案 0 :(得分:0)

您可以简单地在NPM脚本中回显环境变量。

例如,在项目根目录的命令行中运行以下命令:

export SOME_ENV=blalala

然后在您的package.json中像这样使用它:

"scrips:" {
  "print-env": "echo $SOME_ENV"
}

这会将blalala输出到控制台。

如果您想在.env中定义环境变量以使其在脚本中可用,请使用以下命令:https://www.npmjs.com/package/better-npm-run

npm i better-npm-run

创建您的.env文件,然后使用完全如上所示的变量