Як використовувати приватний репортаж Github як npm-залежність


203

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

Відповіді:


284

Це можна зробити через https та oauth або ssh.

https та oauth: створіть маркер доступу, який має область "repo", а потім використовуйте цей синтаксис :

"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
Як вам це завжди до останнього випуску?
SIr Codealot

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

Цей формат приймає User + пароль

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 Scopes перевірте ввімкнення репо : Повний контроль над приватними сховищами

Це так, що маркер може отримувати доступ до приватних репост, які може бачити користувач

Тепер створіть нову групу у вашій організації, додайте цього користувача до групи та додайте лише сховища, які, як ви очікуєте, будуть витягнуті таким чином (ЧИТАЙТЕ ТОЛЬКО дозвіл!)

Вам потрібно обов’язково натиснути цей конфігурацію лише на приватне репо

Потім ви можете додати це до свого / пакета.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?
Con Antonakos

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