【问题标题】:How do I use environment variables or mask secrets in package.json?如何在 package.json 中使用环境变量或掩码机密?
【发布时间】:2020-06-10 13:01:52
【问题描述】:

这是我的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 存储库中。我想知道的是,处理username:password 部分migrate_dev 脚​​本的最佳方法是什么?

(我已经查看了this,但我很确定我不能使用.js 文件作为package.json 的替代品。)

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

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

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

【问题讨论】:

  • 您所指的秘密都在您的.env 文件中,对吧?
  • 您可以使用现有的 shell 工具来处理这个问题。考虑让 package.json 触发一个外部脚本,而不是尝试将其全部嵌入脚本块中。

标签: reactjs git postgresql environment-variables package.json


【解决方案1】:

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

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

因为您的秘密在您的.env 文件中,它们只能以编程方式访问,而package.json 本身不 具有该功能。这需要.js 文件。

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

"migrate_dev": "node migrate_dev.js"

在migrate_dev.js 中,您应该可以访问您的.env 文件和node-pg-migrate 的Programmatic API(其CLI 等效于JS):

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

【讨论】:

  • 我会试一试的。谢谢;-)
  • 其实我没有看到那个页面...结果发现有一个-d 选项可以指定DATABASE_URL 环境变量!所以我可以定义一堆.env 变量,并将它们硬编码到package.json 文件中,例如"migrate": "node-pg-migrate", "migrate_dev": "NODE_ENV=dev node-pg-migrate -d DEV_DB_URL",
猜你喜欢
  • 2016-04-11
  • 2018-03-18
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多