Зависимости протокола gpm от npm

На работе мы за 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?

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

Спасибо

Ответы на вопрос(5)

чтобы заставить его работать

git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."https://".insteadOf git://
Решение Вопроса

// с помощью следующей команды:

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

мы изменили код NPM, чтобы заменитьgit протокол поhttp протокол (благодаря открытому исходному коду)

Наnpm v1.1.69в файлnpm/lib/cache.jsЯмы добавили следующие строки в функцию I '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])
 Ed Hinchliffe21 окт. 2013 г., 13:13
спасибо, переписывание URL не былоЯ работаю за моим прокси-сервером, но это так.
 quornian20 мая 2014 г., 21:47
Я должен был также изменитьgit: вhttps: в этом файле:npm/node_modules/github-url-from-username-repo/index.js, но вы помогли мне решить ту же проблему. Спасибо!
 krampstudio20 февр. 2013 г., 13:39
мы также нашли этоstackoverflow.com/questions/4891527/...

npm использует git: // и ssh + git: // только по умолчанию).

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

git+https:// или жеgit+http:// в ваших URL зависимостей

Я взял следующий 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"
}
</[email protected]>

Я тогда побежал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              .
18/02/2013  13:57              ..
18/02/2013  13:58              .bin
18/02/2013  13:57              crypto-browserify
18/02/2013  13:56              express
18/02/2013  13:57              github-flavored-markdown
18/02/2013  13:56              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 не работал, вызывая ошибки.

 Rob Kielty18 февр. 2013 г., 15:19
Ах я вижу; Это не должноНевозможно настроить SSH-туннель в среде Windows, для этого есть инструменты. В противном случае вы можете взломать ваши непосредственные зависимости, чтобы использовать варианты + http. Ужасный взлом, хотя точно. Наконец, есть возможность создать экономическое обоснование для проекта и представить его своему сетевому менеджеру, чтобы разрешить git-трафик.
 krampstudio18 февр. 2013 г., 15:15
Я неУ него есть контроль над файлом package.json зависимостей. В моем package.json все мои зависимости используютgit+https Схема, но проблема для транзитивных зависимостей (зависимости моих зависимостей).

Ваш ответ на вопрос