npm git协议依赖项

kra*_*dio 14 git npm

在工作中,我们支持HTTP代理,并且git协议(端口9418)被拒绝.我的项目有NPM依赖项,其中一些依赖项具有使用git协议的依赖项,例如:

在我的 package.json

"dependencies": {
    "jsdoc3" : "git+https://github.com/jsdoc3/jsdoc.git"
}
Run Code Online (Sandbox Code Playgroud)

package.jsonjsdoc3:

"dependencies": {
    "crypto-browserify": "git://github.com/dominictarr/crypto-browserify.git#95c5d505",
    "github-flavored-markdown": "git://github.com/hegemonic/github-flavored-markdown.git"
}
Run Code Online (Sandbox Code Playgroud)

我如何获得这些依赖项,如何告诉NPM使用git+https://协议而不是git://协议或能够使用git协议?

为了简化我在Windows上的事情(在Linux上创建SSH隧道会更容易),我使用GIT-Bash.

谢谢

小智 34

您可以使用以下命令告诉git使用https而不是git://:

git config --global url."https://".insteadOf git://
Run Code Online (Sandbox Code Playgroud)


kra*_*dio 5

最后我找到了一个肮脏的解决方案,但是工作正常.我修改了NPM的代码,用git协议替换了http协议(感谢开源)

npm v1.1.69上,npm/lib/cache.js我在文件中添加了以下几行addRemoteGit

 // ssh paths that are scp-style urls don't need the ssh://
 if (parsed.pathname.match(/^\/?:/)) {
   u = u.replace(/^ssh:\/\//, "")
 }

 //begin trick
 if(/^git:/.test(u)){
     u = u.replace(/^git/, 'https');
 }
 //end trick

 log.verbose("addRemoteGit", [u, co])
Run Code Online (Sandbox Code Playgroud)

  • 我也发现了这个http://stackoverflow.com/questions/4891527/git-protocol-blocked-by-company-how-can-i-get-around-that/10729634#10729634 (2认同)