首页 > 解决方案 > 如何在 package.json 中使用环境变量或掩码机密?

问题描述

package.json这是我的文件的摘录:

"scripts": {
    "start": "cross-env NODE_ENV=prod npx ./bin/www",
    "migrate": "node-pg-migrate",
    "migrate_dev": "DATABASE_URL=postgres://username:password@localhost:5432/dev_db NODE_ENV=dev node-pg-migrate",
  },

我将我的.env文件排除在外,.gitignore以确保我的秘密不会泄露到 git repo 中。我想知道的是,处理脚本username:password部分的最佳方法是什么?migrate_dev

(我已经看过这个,但我很确定我不能使用.js文件作为package.json替身。)

我尝试将环境变量分配给环境变量,例如

"scripts": {
    ...
    "migrate_dev": "DATABASE_URL=DEV_DB_URL NODE_ENV=dev node-pg-migrate",
    ...
  },

但是,遗憾的是,此时尚未定义它们 - #bootstraps!;-)

标签: reactjsgitpostgresqlenvironment-variablespackage.json

解决方案


如何在 package.json 中使用环境变量或掩码机密?

我在 .gitignore 中排除了我的 .env 文件,以确保我的秘密不会泄漏到 git 存储库中。

因为您的机密在您的.env文件中,所以只能以编程方式访问它们,并且package.json它本身没有该功能。这将需要一个.js文件。

您可以从脚本运行.js文件(即migrate_dev.js) :migrate_dev

"migrate_dev": "node migrate_dev.js"

在里面migrate_dev.js你应该可以访问你的.env文件和node-pg-migrate's Programmatic API(它的 CLI 等效于 JS):

https://salsita.github.io/node-pg-migrate/#/api


推荐阅读