【问题标题】:Load Local Environmental Variables For Use In NPM Scripts加载本地环境变量以在 NPM 脚本中使用
【发布时间】:2019-05-16 21:22:56
【问题描述】:

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

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

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

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

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

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

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

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

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

这两种方法看起来都不必要地繁琐,并且不能很好地扩展。

有没有办法加载在项目本地文件中定义的 env 以便它们可用于 NPM 脚本?

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

【问题讨论】:

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


    【解决方案1】:

    您可以在 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 文件,然后使用如上所示的变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-16
      • 2016-01-24
      • 2018-12-03
      • 1970-01-01
      • 2016-09-05
      • 2017-02-22
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多