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

203

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

ryanve
источник

Ответы:

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"

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

ryanve
источник
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

equivalent8
источник
1
Итак, безопасно ли передавать этот личный токен доступа и использовать его в чем-то вроде Travis CI?
Кон Антонакос
@ConAntonakos, если проект является частным репозиторием Github, и вы заплатили CI Travis, который запускает ваш частный репозиторий проектов Github, тогда да (вроде как, поскольку вы не публикуете свои учетные данные публично) Также следует помнить, что вам нужно создавать и использовать учетные данные нового пользователя Github, который имеет доступ только для чтения к этому закрытому репо. Так что не используйте свой личный счет :) ... создайте учетную запись пользователя бота, которую легче заблокировать в случае разоблачения;) ... Если вы создаете проект банка, он не пройдет аккредитацию ISO, так что нет, он никогда не будет защищать даже не хранить код на GH
эквивалент8