2016-07-07 70 views
11

我知道如何使从GitHub上发布的NPM的依赖: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 

二进制发行资产exist outside of GitHub和正在使用AWS S3。

的URL github.com/user/repo/releases/download/v1.0.0/bin.tgz302状态和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不是fo放弃重定向?
  • 为什么选择404
  • 有没有办法将NPM依赖链接到GitHub发行版的二进制tarball中?怎么样?

我的背景和需要:

  • 我有一个私人的GitHub库
  • 我的包需要 “部署” 前建成(transpilation等)
  • 我想在我的GitHub发行版中“发布”这个构建的tarball,并直接将其引用到我的NPM依赖项
  • 我使用CI服务来构建,制作压缩包旁边上传至GitHub的释放
  • 我想用GitHub上发布二进制的NPM库

相关

回答

1

Github发布基于Git标签。

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

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

要指定一个URL GIT中的一个版本,包括一个合适的,例如一个标签,在结束作为URL片段 实施例,对于名为0.3.1标签:

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

而且,不同的广告:

"dependencies": { 
    "myprivatemodule": "[email protected]:...#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中的身份验证。

公共回购:

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

私人回购协议:

  1. 创建一个私人的访问令牌https://github.com/settings/tokens
  2. 创建自己的HTTP代理从版本下载断言。 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