Подтвердить что ты не робот

Npm git зависимости от протокола

На работе мы отстаем от HTTP-прокси, а протокол git (порт 9418) отклоняется. Мой проект имеет зависимости от NPM, и некоторые из этих зависимостей имеют зависимости, которые используют протокол git, например:

В моем package.json

"dependencies": {
    "jsdoc3" : "git+https://github.com/jsdoc3/jsdoc.git"
}

и package.json для jsdoc3:

"dependencies": {
    "crypto-browserify": "git://github.com/dominictarr/crypto-browserify.git#95c5d505",
    "github-flavored-markdown": "git://github.com/hegemonic/github-flavored-markdown.git"
}

Как я могу получить эти зависимости, как сообщить NPM использовать протокол git+https:// вместо протокола git:// или использовать протокол git?

Чтобы упростить работу, я нахожусь в окнах (было бы проще в Linux создавать SSH-туннель), и я использую GIT - Bash.

Спасибо

4b9b3361

Ответ 1

Вы можете сказать git использовать https вместо git://с помощью следующей команды:

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

Ответ 2

Наконец, я нашел грязное решение, но это прекрасно работает. Я изменил код 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])

Ответ 4

В URL-адресах зависимостей можно указать git+https:// или git+http://

Я взял следующий пакет package.json из

{
  "name": "Sample package",
  "description": "Pacake for a Stackoverflow question",
  "author": "rk <[email protected]>",
  "dependencies": {
    "crypto-browserify": "git+https://github.com/dominictarr/crypto-browserify.git#95c5d505",
    "github-flavored-markdown": "git+https://github.com/hegemonic/github-flavored-markdown.git"
  },
  "engine": "node 0.4.1"
}

Затем я запустил npm install, а node_modules содержал следующее

C:\Users\myself\node\node_modules>dir
 Volume in drive C is WINDOWS
 Volume Serial Number is 6E7A-96BE

 Directory of C:\Users\myself\node\node_modules

18/02/2013  13:57    <DIR>          .
18/02/2013  13:57    <DIR>          ..
18/02/2013  13:58    <DIR>          .bin
18/02/2013  13:57    <DIR>          crypto-browserify
18/02/2013  13:56    <DIR>          express
18/02/2013  13:57    <DIR>          github-flavored-markdown
18/02/2013  13:56    <DIR>          optimist
               0 File(s)              0 bytes
               7 Dir(s)  31,641,919,488 bytes free

C:\Users\myself\node\node_modules>

Я пробовал это с обоими протоколами git + http и git + https, и оба работали, но голый http не работал, производя ошибки.

Ответ 5

В дополнение к предложению @Nowres мне пришлось сделать следующее, чтобы заставить его работать

git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."https://".insteadOf git://