使用npm install跳过GitHub依赖项

时间:2019-03-22 14:40:20

标签: git npm npm-install

作为一个简短的介绍,我有自动构建的程序,该程序会安装NPM的依赖项以对它们进行一些分析。因此,重要的是要考虑到,在运行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-confignpm install文档,但找不到想要的标志。我想知道:是否有一种方法可以跳过除NPMrepository以外的其他来源的依赖项,或者当其中一个失败时继续安装依赖项?

我不需要分析此软件包,因为它间接地属于我的组织,因此跳过它会很好,但是我不能简单地将其从package.json中删除,因为它是用来真正在其他情况下安装该应用程序。

修改

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

NPM Install with Git

我可以确认git://不是错字,它是在正在运行的项目的package.json中键入的。我也没有机会更改此配置文件,因为我没有此项目的所有权。

1 个答案:

答案 0 :(得分:0)

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

我无法修改package.json文件,但最终在脚本中完成了此操作:

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

这样,我临时将配置更改为可行的(即使根据npm的文档,git://应该可行)