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

时间:2016-07-07 09:37:39

标签: github npm npm-install

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

"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。

网址github.com/user/repo/releases/download/v1.0.0/bin.tgz正在重定向,其中302状态和HTTP位置标头设置为https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...

如果我直接尝试使用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不遵循重定向?
  • 为什么选择404
  • 有没有办法将NPM依赖关系链接到GitHub发布的二进制tarball?怎么样?

我的背景和需求:

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

相关

3 个答案:

答案 0 :(得分:1)

我不认为npm根据他们的文档提供了这样做的方法,他们支持使用github的tarball,但不支持发行版附带的特定二进制文件。 https://docs.npmjs.com/cli/install 我认为它将起作用的唯一方法是下载文件并使用“ npm install”文档中所述的“ tarball文件”方式。

我在同一条船上,我想我最终将使用npm私有存储库。

答案 1 :(得分:0)

Github发布基于Git标签。

  

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

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

要指定具有Git URL的版本,请在末尾添加适当的标记(如标记)作为URL片段。 例如,对于名为0.3.1的标记:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}

应该填写剪切部分(...):

"myprivatemodule": "git@github.com:{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

答案 2 :(得分:0)

404是因为您是私人回购并且未在网址中包含身份验证。

公开回购:

"agentframework": "https://codeload.github.com/agentframework/agentframework/tar.gz/beta"

私人回购:

  1. 创建私人访问令牌https://github.com/settings/tokens
  2. 创建您自己的http代理以从发布版下载断言。 https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
  3. 将http代理网址添加到您的package.json
  4. 的package.json

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

    BTW:您可以使用我在项目中使用的yarn install