当前位置: 首页 > 知识库问答 >
问题:

如何在package.json内部的npm脚本中使用SECRET_ENV?

晏志明
2023-03-14

我有一个名为API_KEY的密钥,我想在 package.json脚本中访问它。

{
   "scripts": {
      "start": "web-ext run --api-key=API_KEY"
   }
}

我的. env文件包含API_KEY

API_KEY=abc123

我如何访问API_KEYpackage.json脚本的值,同时仍然保持它的秘密,因为我需要推送package.json公开?

目前,我执行以下操作,但不能跨平台:

{
   "scripts": {
      "start": "web-ext run --api-key=$API_KEY"
   }
}

当运行start脚本时,我会这样做:

API_KEY=abc123 npm start

这得益于Bash编程语言,但在Windows上不起作用。我需要用%API_KEY%替换startscript中的 。但我希望它是跨平台的。还有别的办法吗?

共有3个答案

鄢松
2023-03-14

您可以简单地要求“dotenv”库,并从进程.env访问变量。{SOME_KEY}

於意蕴
2023-03-14

1) 您可以将“npm-env-cmd”用作devDependencies

从文件设置环境

环境文件<代码>。/.环境

# This is a comment
API_KEY=abc123

包装.json

{
  "scripts": {
    "start": "env-cmd web-ext run"
  }
}

2)您可以使用“npm交叉环境”作为开发依赖关系

运行跨平台设置和使用环境变量的脚本

用法

{
  "scripts": {
    "start": "cross-env API_KEY=abc123 web-ext run"
  }
}

你可以尝试这样的事情:

cmd /C "set API_KEY=abc123 && npm start"

正如Viper_Sb在这里所说:

/C 在运行后立即退出新的 cmd,如果使用新的输出生成输出,它仍将在父窗口中可见。

您可以选择使用/K,在这种情况下,新的cmd窗口将在运行结束时保持打开状态。

斜俊
2023-03-14

到目前为止,我发现的唯一可行的答案有点滑稽:

{
   "scripts": {
      "start": "web-ext run --api-key=$(grep API_KEY .env | cut -d '=' -f2)"
   }
}

[https://stackoverflow.com/a/58038814/1822977]

 类似资料:
  • 问题内容: 我的样子是这样的: 因此,首先,我必须分别运行每个脚本,例如or 等。我理想的情况是运行将执行以下操作的脚本: 运行html-minifier 运行节点ass 运行图像最小 运行http服务器 最后,观看我文件夹中的所有内容,并在文件更改(例如,等)时运行相应的脚本。 我怎样才能最好地解决这个问题? 问题答案: 您可以使用查看目录。 一个适合您的解决方案是创建三个监视脚本,每个任务一个

  • 问题内容: 对于新模块,我试图在没有gulp / Grunt /其他专用构建工具的情况下使用。 我的build.js很简单 但是,跑步 仅退出而不打印任何内容,状态为0。 运行: 也可以执行所有正常操作,但是也不运行build.js。 如何让npm运行我的构建脚本? 编辑:即使简单的bash命令似乎也不起作用,例如 不使用该名称创建文件。 问题答案: 不幸的是,已经是 内部 命令,如docs中所述

  • 对于一个新模块,我尝试使用,而不使用gulp/Grunt/其他专业构建工具。 我的build.js只是 然而,运行 仅在不打印任何内容的情况下退出,状态为0。 运行: 也执行所有正常操作,但也不运行build.js。 如何让npm运行我的构建脚本? 编辑:即使是简单的bash命令似乎也不起作用,例如 不会生成具有该名称的文件。

  • 文件结构应如下所示: (包含已安装的npm模块的文件夹) 我试过这个: 错误: 回溯(最后一次调用):文件“c:\Users\Alifreeze.vscode\extensions\ms python.python-2020.1.58038\pythonFiles\ptvsd_launcher.py”,主文件(ptvsdArgs)第43行“c:\Users\Alifreeze.vscode\ext

  • 是否有方法在package.json命令内传递参数? cli 然后在上,我想用获取参数

  • 问题内容: 如何从“脚本” 执行PowerShell ps1脚本? 我知道如何在package.json“ scripts”中设置基本脚本。例如,使用以下配置,我可以执行该命令,该命令将向控制台输出“这仅仅是测试”: 但是,我有一个更高级的场景,我想执行一个PowerShell脚本。像这样: 我可以通过scripts对象执行这样的ps1脚本吗?是否需要任何特殊的设置/配置?还有其他限制吗? 问题答