作为一个简短的介绍,我有自动构建的程序,该程序会安装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-config和npm install文档,但找不到想要的标志。我想知道:是否有一种方法可以跳过除NPMrepository以外的其他来源的依赖项,或者当其中一个失败时继续安装依赖项?
我不需要分析此软件包,因为它间接地属于我的组织,因此跳过它会很好,但是我不能简单地将其从package.json
中删除,因为它是用来真正在其他情况下安装该应用程序。
修改
有一条评论指出使用git://
可能不是一个好的解决方案,但是根据NPM文档,这应该可以工作。以下屏幕截图来自npm documentation,第四行与我的配置匹配
我可以确认git://
不是错字,它是在正在运行的项目的package.json
中键入的。我也没有机会更改此配置文件,因为我没有此项目的所有权。
答案 0 :(得分:0)
回答我自己的问题感到很尴尬,但我在@evolutionbox的评论帮助下找到了解决方案。
我无法修改package.json
文件,但最终在脚本中完成了此操作:
git config --global url."https://".insteadOf "git://"
npm install
git config --global url."git://".insteadOf "https://"
这样,我临时将配置更改为可行的(即使根据npm的文档,git://
应该可行)