NPM安装后,CA证书和Windows

时间:2019-12-06 20:14:01

标签: javascript node.js ssl npm

TLDR;

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

详细信息

这让我发疯了。

我通过imagemin,imagemin-webpack和各种imagemin格式特定的插件在Webpack的构建过程中添加了图像优化。

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

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

I.T。侦听我们的流量,因此(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,但我不想引入任何其他复杂性。我非常感谢您提前提供的帮助!

1 个答案:

答案 0 :(得分:0)

您尝试过

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