Установка/зависимость NPM из двоичной версии GitHub Release
Я знаю, как сделать зависимость NPM от версии GitHub:
"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
Активы двоичной версии существуют за пределами 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 (см. вопрос NPM):
> 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 не выполняет перенаправление?
- Почему a
404
?
- Есть ли способ связать зависимость NPM с бинарным tarball выпуска GitHub? Как?
Мой контекст и потребности:
- У меня есть приватный репозиторий GitHub
- Мой пакет должен быть создан до "развертывания" (transpilation и т.д.)
- Я хочу "опубликовать" tarball этой сборки в своем выпуске GitHub и напрямую ссылаться на мои зависимости NPM.
- Я использую службу CI для сборки, создаю архив и загружаю его рядом с выпуском GitHub.
- Я хотел бы использовать двоичный релиз GitHub как репозиторий NPM
Связанные
Ответы
Ответ 1
Выпуски Github основаны на тэгах Git.
"... Версии основаны на Gitтеги".
https://help.github.com/articles/creating-releases/
Чтобы указать версию с URL-адресом Git, включите соответствующий, например тег, конец в виде фрагмента 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 установить из Git в определенную версию
Ответ 2
404 - это то, что вы являетесь частным репо и не включаете аутентификацию в URL-адрес.
Публичное репо:
"agentframework": "https://github.com/agentframework/agentframework/releases/download/beta/agentframework-beta.tar.gz"
Частное репо:
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
, который я использовал в своих проектах