2016-07-07 2 views
11

Я знаю, как сделать зависимость НПМ от выпуска GitHub:NPM установить/зависимость от GitHub Release Binary

"dependencies": { 
    "package-name": "user/repo#v1.0.0" 
} 

Это хорошо, но я хочу, чтобы установить конкретный двоичный из этого выпуска ,

Я попытался

"dependencies": { 
    "package-name": "https://github.com/user/repo/releases/download/v1.0.0/bin.tgz" 
} 

Но дает мне следующую ошибку:

❯ npm install 
npm ERR! fetch failed https://github.com/user/repo/releases/download/v1.0.0/bin.tgz 
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404 

Бинарные релиз активов exist outside of GitHub и использовании AWS S3.

URL-адрес github.com/user/repo/releases/download/v1.0.0/bin.tgz перенаправляет с 302 статуса и заголовка HTTP местоположения установлен в https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...

Если я пытаюсь непосредственно с URL S3 я получил ошибку ENAMETOOLONG (see NPM issue):

> npm install https://github-cloud.s3.amazonaws.com/releases/XXX/XXX... 
npm ERR! tarball.destroy is not a function 
npm WARN retry will retry, error on last attempt: Error: ENAMETOOLONG: name too long, open '/var/folders/pn/...... 

Вопросы:

  • Почему NPM не f перенаправить перенаправление?
  • Почему 404?
  • Есть ли способ связать зависимость NPM с бинарным архивом релиза GitHub? Как?

Мой контекст и потребности:

  • У меня есть личное хранилище GitHub
  • Мой пакет должен быть построен до "развертывания" (transpilation и т.д.)
  • Я хочу «опубликовать» tarball этой сборки в моем выпуске GitHub и напрямую ссылаться на мои зависимости от NPM.
  • Я использую службу CI для сборки, создания тарбалл и загрузить его рядом с GitHub релиз
  • Я хотел бы использовать GitHub бинарные дистрибутивы в качестве НПМ хранилище

Связанные

ответ

1

Github Релизы основаны на тегах Git.

"... Версии основаны на тегах Git ."

https://help.github.com/articles/creating-releases/

Чтобы указать версию с URL-Гитом, включает в себя соответствующее, например, теге, в конце как фрагмент URL Примера, для тега с именем 0.3.1:.

"dependencies": { 
    "myprivatemodule": "[email protected]:...#0.3.1" 
} 

отрезала часть (...) должны быть заполнены:

"myprivatemodule": "[email protected]:{owner}/{project}.git#0.3.1" 

И, диффере Формат т адрес будет необходим, когда доступ к SSH недоступен:

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1" 

любезно взяты из: npm install from Git in a specific version

0

404, потому что вы частный репо и не включают в себя проверку подлинности в URL.

Public репо:

"agentframework": "https://github.com/agentframework/agentframework/releases/download/beta/agentframework-beta.tar.gz" 

Частный репо:

  1. Создать частный доступ токенов https://github.com/settings/tokens
  2. Создайте свой собственный HTTP прокси-сервер для загрузки Assert от выпуска. https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
  3. Добавить Прокси-сервер HTTP URL для вашего package.json

package.json

{ 
    "name": "test", 
    "version": "1.0.0", 
    "dependencies": { 
    "agentframework": "https://github.com/agentframework/agentframework/releases/download/beta/agentframework-beta.tar.gz" 
    } 
} 

BTW: Вы можете использовать yarn install, которые я использовал в своих проектах

+0

Можете ли вы объяснить более подробно о том, как настроить HTTP-прокси? – line72

Смежные вопросы