我有一个看起来像这样的npm脚本:
"start": "server start --host $DEV_HOST"
还有许多其他脚本也引用$DEV_HOST
env。
当前$DEV_HOST
在我的~/.bashrc
中导出,但我想找到一种将其本地定义到项目的方法,例如在.env
文件中。
我想知道NPM是否提供了preall
钩,该挂钩可以允许调用一个简单的bash文件,该文件可以加载到本地Envs中,但不存在此类钩子。
看来NPM不提供任何框出本地设备的负载机制。
我目前能想到的唯一解决方案是:
将所有需要本地env的脚本移至其自己的bash文件中,并在其中每个文件中加载.env文件中。
在每个脚本之前需要单独的脚本,该脚本需要从.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
文件,然后完全使用上述变量