使用 npm install 跳过 GitHub 个依赖项

Skip GitHub dependencies with npm install

简单介绍一下,我有自动构建,可以从 NPM 安装依赖项,运行 对它们进行一些分析。所以重要的是要考虑到,在 运行ning npm install 之后,应用程序甚至不需要工作,我只需要依赖项。

为了简单起见,假设我的 package.json 中的 dependencies 看起来像这样(实际上有更多的依赖关系,但它们并不重要):

"dependencies": {
  "pdf2json": "git://github.com/jmdeejay/pdf2json.git#a384122f",
  "phone": "~2.3.7",
},

phone可以正常安装,但是pdf2json不行。

当我 运行 npm install 时,出现以下错误:

[10:21:19][Step 1/4] npm ERR! C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git://github.com/jmdeejay/pdf2json.git
[10:21:19][Step 1/4] npm ERR! 
[10:21:19][Step 1/4] npm ERR! fatal: unable to connect to github.com:
[10:21:19][Step 1/4] npm ERR! github.com[0: 192.30.253.112]: errno=No such file or directory
[10:21:19][Step 1/4] npm ERR! github.com[1: 192.30.253.113]: errno=No such file or directory
[10:21:19][Step 1/4] npm ERR! 
[10:21:19][Step 1/4] npm ERR! 
[10:21:19][Step 1/4] npm ERR! exited with error code: 128

我认为这可能与构建服务器的防火墙或所述服务器的某些配置有关,但这不是我想要解决的问题。

我查看了 npm-config and npm install 文档,但找不到我想要的标志。我想知道:有没有一种方法可以跳过 NPMrepository 以外的其他来源的依赖项,或者在其中一个失败时继续安装依赖项?

我不需要分析这个包,因为它间接属于我的组织,所以我完全可以跳过它,但我不能简单地将它从 package.json 中删除,因为它是用于在其他场景下真正安装应用。

编辑

有评论指出使用 git:// 可能不是一个好的解决方案,但根据 NPM 文档,这应该可行。以下截图来自npm documentation,第四行符合我的配置

我可以确认 git:// 不是拼写错误,它是在一个正在运行的项目的 package.json 中以这种方式输入的。我也没有机会更改此配置文件,因为我没有此项目的所有权。

回答我自己的问题感觉很尴尬,但我在@evolutionbox 的评论的帮助下找到了解决方案。

我无法修改 package.json 文件,但我最终在我的脚本中这样做了:

git config --global url."https://".insteadOf "git://"
npm install
git config --global url."git://".insteadOf "https://"

通过这种方式,我暂时将我的配置更改为有效的配置(尽管根据 npm 的文档,git:// 应该有效)