javascript - 加载本地环境变量以在 NPM 脚本中使用
问题描述
我有一个如下所示的 NPM 脚本:
"start": "server start --host $DEV_HOST"
还有许多其他脚本也引用了$DEV_HOST
env。
目前$DEV_HOST
在 my 中导出~/.bashrc
,但我想找到一种在项目本地定义它的方法,例如在.env
文件中。
我想知道 npm 是否提供了一个preall
钩子,它允许调用一个简单的 bash 文件,该文件可以加载到本地环境中,但不存在这样的钩子。
NPM 似乎也没有为本地环境提供任何开箱即用的加载机制。
我目前能想到的唯一解决方案是:
将所有需要本地 env 的脚本移动到它们自己的 bash 文件中,并在每个脚本中加载 .env 文件。
在需要从 .env 文件加载到环境中的本地环境的每个脚本之前调用一个单独的脚本。
这两种方法看起来都不必要地繁琐,并且不能很好地扩展。
有没有办法加载项目本地文件中定义的环境,以便它们可用于 NPM 脚本?
注意:我不是在问如何将环境加载到应用程序中。我在问如何使环境对 npm 脚本可用。这两件事完全不同。dot-env 将环境添加到当前进程。即使您创建了一个使用 dot-env 加载一些环境的节点脚本,这些环境也无法通过 $ 变量获得,因为它们没有加载到环境中。它们只能在同一进程中通过process.env
.
解决方案
你可以简单地在你的 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
文件,然后完全如上所示使用变量
推荐阅读
- java - 如何处理java中的递归Stackoverflows
- sas - 如何区分是读入数字还是字符观察?
- android - 使用 android ime 切换 Archor 选择
- javascript - 在 Angular 中使用点击事件处理多个组件
- bash - 如何将通过命令行输入的字符串类型转换为shell脚本中的时间类型?
- angular-cli - ng build 卡在 95%
- php - 如何在 foreach 循环中求和计数查询?
- ruby-on-rails - 参数存在时的 ActionController::ParameterMissing
- asp.net - Web API 在本地工作正常但在服务器上返回 501?
- angular - 为什么带有选择的Angular ngModel不起作用