我有一个NPM脚本,如下所示:
"start": "server start --host $DEV_HOST"
还有许多其他脚本也引用了$DEV_HOST
环境。
当前$DEV_HOST
已导出到我的~/.bashrc
中,但是我想找到一种在项目中本地定义它的方法,例如在.env
文件中。
我想知道npm是否提供了一个preall
钩子,该钩子将允许调用一个可以在本地envs中加载的简单bash文件,但是不存在这样的钩子。
NPM似乎也没有为本地环境提供任何加载机制。
我目前唯一想到的解决方案是:
将需要本地env的所有脚本移动到自己的bash文件中,并在每个文件中加载.env文件。
在需要从.env文件加载到envs中的每个需要本地env的脚本之前,调用一个单独的脚本。
这两种方法看上去都不必要地麻烦,而且缩放性也不佳。
是否可以加载项目本地文件中定义的env,以便可以在NPM脚本中使用它们?
注意:我不是在问如何将envs加载到应用程序中。我在问如何使nv脚本可以使用env。这两件事完全不同。 Dot-env将envs添加到当前进程。即使您创建了使用dot-env加载某些env的节点脚本,这些env也不会通过$变量提供,因为它们没有加载到环境中。它们只能通过process.env
在同一进程中使用。
答案 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
文件,然后使用完全如上所示的变量