Я знаю, как сделать зависимость 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
Связанные
- Вопрос SO: Как установить пакет npm из GitHub напрямую?
- Проблема NPM: https://github.com/npm/npm/issues/3055