javascript - NPM 安装后、CA 证书和 Windows

标签 javascript node.js ssl npm

TLDR;

是否可以在 Windows 环境中以与 NPM 包的安装后脚本一起使用的方式设置 NODE_EXTRA_CA_CERTS,而无需进行系统更改、配置文件更改或需要管理员的更改级权限?

详情

这让我抓狂。

我通过 imagemin、imagemin-webpack 和各种特定于 imagemin 格式的插件将图像优化添加到我们的 Webpack 构建过程中。

所有 imagemin 插件都有一个共同点——在安装后,它们:

一个。尝试下载预构建的 EXE。
b.如果 (a) 失败,他们会尝试从源代码构建 EXE。

IT窥探我们的流量,因此 (a) 在尝试获取远程 EXE 时由于“链中的自签名证书”错误而失败。 (b) 失败,因为我们的工作室是基于 Windows 的,我们没有安装所有各种构建工具来实现这一点。将它们安装在每台可能运行 npm install 的机器上也是不合理的。

我做了一些挖掘(感谢 S.O.),找到了我们公司的 CA 证书,将其添加到存储库中,并且能够 (a) 使用以下命令:

> SET NODE_EXTRA_CA_CERTS=%cd%\ca.cert
> npm install

当时我以为我在家是自由的——我所要做的就是将这个 npm 脚本添加到我们的 package.json 中:

{
  "preinstall": "SET NODE_EXTRA_CA_CERTS=%cd%\\ca.cert"
}

但这行不通。我猜这是因为涉及到一个单独的进程,并且环境变量不会转移到其他进程。

请注意,这确实有效,但绝对糟糕:

{
  "preinstall": "SET NODE_EXTRA_CA_CERTS=%cd%\\ca.cert&& npm install imagemin-gifsicle imagemin-mozjpeg imagemin-optipng imagemin-svgo"
}

有没有办法以与 NPM 包的安装后脚本一起使用的方式自动设置此环境变量?

我希望这对其他团队成员是透明的,这样他们就可以继续 npm install,而无需任何额外的步骤、系统更改或配置文件更改(如果可能的话)。有些团队成员不是开发人员,所以虽然他们习惯于运行 npm install,但我不想引入任何额外的复杂性。我非常感谢提前提供的任何帮助!

最佳答案

你试过吗

npm config set cafile "<path to your certificate file>"

关于javascript - NPM 安装后、CA 证书和 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219752/

相关文章:

javascript - Sinon spy 函数被调用但未被跟踪

etags 中的 Javascript 支持

amazon-web-services - 当我的域名前没有使用 https 时,SSL 认证不起作用

node.js - Azure SDK - NodeJS - 重新上传 blob 时 MD5 哈希值无效

javascript - 是否可以在 Mustache (或 hogan)中以不同的方式处理 null 和 false ?

apache - 使用 VirtualDocumentRoot 在 SSL 中进行虚拟托管

mysql - 如何通过 SSL 设置 ColdFusion MySQL 数据源?

javascript - 使用javascript重播鼠标移动

javascript - 我怎样才能用jquery中的每个函数对多个数字求和?

javascript - 嵌套 JS 同一个提供者的两个实例