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



我有一个看起来像这样的npm脚本:

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

还有许多其他脚本也引用$DEV_HOST env。

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

我想知道NPM是否提供了preall钩,该挂钩可以允许调用一个简单的bash文件,该文件可以加载到本地Envs中,但不存在此类钩子。

看来NPM不提供任何框出本地设备的负载机制。

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

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

  2. 在每个脚本之前需要单独的脚本,该脚本需要从.env文件中加载ENV中的本地ENV。

这两个似乎都不必不可少,而且不缩放不好。

是否有任何方法可以在项目 - 本地文件中定义ENVS,以便在NPM脚本中使用它们?

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

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

例如,在项目root中的命令行上运行以下内容:

export SOME_ENV=blalala

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

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

这将blalala输出到控制台。

如果要在脚本中定义.env中的环境变量,请使用类似的内容:https://www.npmjs.com/package/package/better-npm-npm-run

npm i better-npm-run

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

最新更新