Как использовать частное Github репо в качестве зависимости от npm


203

Как я перечисляю частный GitHub репо как "dependency"ин package.json? Я пытался использовать синтаксис URL-адресов Github в npmryanve/example , но npm installв папке с пакетом выдается ошибка «не удалось установить» для частных зависимостей. Существует ли специальный синтаксис (или какой-то другой механизм) для зависимости от частных репозиториев?

Ответы:


284

Это можно сделать через https и oauth или ssh.

https и oauth: создайте токен доступа с областью репо, а затем используйте этот синтаксис :

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

или

ssh: настроить ssh, а затем использовать этот синтаксис:

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

(обратите внимание на использование двоеточия вместо косой черты перед пользователем)


19
Или, если вы настроили ssh на github, пропустите токен и используйте: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
Как у вас это всегда на последнем выпуске?
Си Кодалот

25
Добавьте #master до конца
Жасмин Хегман

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"не работал для меня. Удивительно, но переключение токенов и x-oauth-basic сделали свое дело. Итак, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"у меня работает. обратите внимание, что я на gitlab, а не на github.
Мизантроник

2
За httpsввод в x-oauth-basicкачестве имени пользователя не является необходимым: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"работает хорошо.
Кадам

25

Если кто-то ищет другую опцию для Git Lab и указанные выше опции не работают, у нас есть другая опция. Для локальной установки сервера Git Lab мы обнаружили, что подход, приведенный ниже, позволяет нам включать зависимость от пакета. Для этого мы создали и используем токен доступа.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

Конечно, если вы используете ключ доступа таким образом, он должен иметь ограниченный набор разрешений.

Удачи!


8

С git есть формат https

https://github.com/equivalent/we_demand_serverless_ruby.git

Этот формат принимает пользователя + пароль

https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git

Итак, вы можете создать нового пользователя, который будет использоваться просто как бот , добавить только достаточно прав, чтобы он мог просто читать репозиторий, который вы хотите загрузить в модули NPM, и просто иметь это непосредственно в своем packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

В Select Области части, проверьте на репо : Полный контроль частных хранилищ

Это сделано для того, чтобы токен мог получить доступ к личным репозиториям, которые может видеть пользователь.

Теперь создайте новую группу в своей организации, добавьте этого пользователя в группу и добавьте только те репозитории, которые вы ожидаете получить таким образом (разрешение только для чтения!)

Вы должны быть уверены, что отправьте этот конфиг только в частный репозиторий

Затем вы можете добавить это в ваш / packages.json (бот-пользователь - это имя пользователя, xxxxxxxxx - сгенерированный персональный токен)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


1
Итак, безопасно ли передавать этот личный токен доступа и использовать его в чем-то вроде Travis CI?
Кон Антонакос

@ConAntonakos, если проект является частным репозиторием Github, и вы заплатили CI Travis, который запускает ваш частный репозиторий проектов Github, тогда да (вроде как, поскольку вы не публикуете свои учетные данные публично) Также следует помнить, что вам нужно создавать и использовать учетные данные нового пользователя Github, который имеет доступ только для чтения к этому закрытому репо. Так что не используйте свой личный счет :) ... создайте учетную запись пользователя бота, которую легче заблокировать в случае разоблачения;) ... Если вы создаете проект банка, он не пройдет аккредитацию ISO, так что нет, он никогда не будет защищать даже не хранить код на GH
эквивалент8
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.