如何将环境变量从文件传递到节点命令

时间:2019-05-07 00:10:28

标签: node.js npm

我有一个通过npm(db-migrate)安装的命令。我想从命令行运行它作为自动化数据库迁移的一部分。脚本的配置文件可以引用环境变量。我已经将数据库凭据设置为另一个文件中的环境变量。因此,我告诉迁移配置不要使用两次,而要设置两次。问题是,如何在运行迁移脚本之前从文件中获取环境变量?另外,如何直接从npm bin运行迁移脚本?

我找到了解决这个问题的好方法,所以我发布问题和答案至少是为了我将来的自己。

1 个答案:

答案 0 :(得分:2)

这可以使用一些工具来完成:

  1. 从文件中读取环境变量并在运行脚本之前进行设置。回顾一下,在运行命令之前设置环境变量很简单:
PORT=3000 node index.js

但是我们想从文件中读取变量。可以使用exportxargs来完成:

export $(cat app.env | xargs)
  1. 我们想直接从npm的bin运行脚本。可以使用bin获取npm bin文件夹的路径。因此,我们只需要在运行命令之前将其添加到路径中即可:
PATH=$(npm bin):$PATH
  1. 现在将它们放在一起:
export $(cat app.env | xargs) && PATH=$(npm bin):$PATH db-migrate up

这将读取环境变量,进行设置,然后将npm bin添加到路径,然后运行迁移脚本。

顺便说一下,app.env的内容看起来像这样:

PORT=3000
DB_NAME=dev
DB_USER=dev_user
DB_PASS=dev_pass