【问题标题】:NPM post-install, CA certificates, and WindowsNPM 安装后、CA 证书和 Windows
【发布时间】: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


    【解决方案1】:

    你试过了吗

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

    【讨论】:

    • 是的,因为这发生在安装后,所以不涉及/尊重 npm 的 CA 设置。仅考虑 Node 的 CA 设置。根据其他 S.O.我读过的线程,没有已知的记录设置来专门为安装后过程设置 CA 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2018-10-21
    相关资源
    最近更新 更多