【发布时间】:2020-03-31 20:05:43
【问题描述】:
TLDR;
是否可以在 Windows 环境中以与 NPM 包的安装后脚本一起使用的方式设置 NODE_EXTRA_CA_CERTS,而无需进行系统更改、配置文件更改或需要管理员级别权限的更改?
详情
这让我发疯了。
我通过 imagemin、imagemin-webpack 和各种特定于 imagemin 格式的插件在我们的 Webpack 构建过程中添加了图像优化。
所有的 imagemin 插件都有一个共同点——在安装后,它们:
一个。尝试下载预构建的 EXE。
湾。如果 (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,但我不想引入任何额外的复杂性。我非常感谢您提前提供的任何帮助!
【问题讨论】:
标签: javascript node.js ssl npm