来自GitHub Release Binary的NPM安装/依赖

Yve*_* M. 17 github npm npm-install

我知道如何从GitHub版本中创建NPM依赖项:

"dependencies": {
  "package-name": "user/repo#v1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

这很好,但我想从这个版本安装一个特定的二进制文件.

我试过了

"dependencies": {
  "package-name": "https://github.com/user/repo/releases/download/v1.0.0/bin.tgz"
}
Run Code Online (Sandbox Code Playgroud)

但我给了我以下错误:

? 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
Run Code Online (Sandbox Code Playgroud)

二进制发布资产存在于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...

如果我直接尝试使用S3 URL,则会出现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/......
Run Code Online (Sandbox Code Playgroud)

问题:

  • 为什么NPM不遵循重定向?
  • 为什么404
  • 有没有办法将NPM依赖关系链接到GitHub版本的二进制tarball?怎么样?

我的背景和需求:

  • 我有一个私有的GitHub存储库
  • 我的包需要在"部署"(转换等)之前构建
  • 我想在我的GitHub版本中"发布"这个构建的tarball,并直接将它引用到我的NPM依赖项中
  • 我使用CI服务来构建,制作tarball并将其上传到GitHub版本旁边
  • 我想使用GitHub发布二进制文件作为NPM存储库

有关

nma*_*anh -1

Github 版本基于 Git 标签。

“...版本基于 Git 标签。”

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

要使用 Git URL 指定版本,请在末尾包含适当的 ,例如标记,作为 URL 片段。例如,对于名为 0.3.1 的标签:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}
Run Code Online (Sandbox Code Playgroud)

被剪断的部分 (...) 应填写:

"myprivatemodule": "git@github.com:{owner}/{project}.git#0.3.1"
Run Code Online (Sandbox Code Playgroud)

并且,当 SSH 访问不可用时,将需要不同的地址格式:

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1"
Run Code Online (Sandbox Code Playgroud)

请取自:特定版本中的 npm install from Git

  • 这可以很好地从代码库本身安装 npm,但不能使用上传到 github 版本的二进制文件(例如包含构建工件的 tarball) (4认同)