【发布时间】:2020-01-22 13:49:21
【问题描述】:
我有一个名为API_KEY 的密钥,我想在package.json 的scripts 中访问它。
package.json
{
"scripts": {
"start": "web-ext run --api-key=API_KEY"
}
}
我的.env 文件包含API_KEY:
API_KEY=abc123
我怎样才能在package.json 的scripts 中访问API_KEY 的值,同时仍然保密,因为我需要公开推送package.json?
目前,我做了以下工作,但不能跨平台:
package.json
{
"scripts": {
"start": "web-ext run --api-key=$API_KEY"
}
}
当运行start 脚本时,我会这样做:
API_KEY=abc123 npm start
这要归功于 Bash 编程语言,但它不适用于 Windows。我需要用%API_KEY% 替换start 脚本中的$API_KEY。但我希望它是跨平台的。有没有其他办法?
【问题讨论】:
-
为什么不简单地使用名为 config.js 的 js 文件创建一个名为 config 的目录,然后对该 api 密钥进行模块导出?比复制该文件并将其命名为 config.js.example 将是空的,并在 .gitignore 中排除文件?
-
@DᴀʀᴛʜVᴀᴅᴇʀ imo 这不是重复的,因为我想保持环境变量值私有。有一个包含
env-cmd的答案可能适用于我的情况,但它不能,因为我想将变量用作--api-key的参数,所以根据github.com/toddbluhm/env-cmd-examples/issues/… 无法做到这一点 -
"当运行
start脚本时,我会像API_KEY=abc123 npm start" - 当你有一个 cli 参数时,为什么还要使用环境变量呢?只需从 package.json 中删除--api-key=API_KEY- 跨平台兼容性没有问题 - 并像npm start --api-key=abc123一样调用它。 -
@Bergi 我仍然需要记住参数
--api-key和--api-secret。因此,我发现我自己的解决方案在问题中得到了很好的建议。让它在 Windows 上运行的唯一方法是将$API_KEY更改为%API_KEY%。当我发布问题时,我认为存在一个更简单的解决方案,但不幸的是它没有:(
标签: javascript node.js environment-variables secret-key