2016-07-07 41 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