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/