2016-07-07 8 views
11

Ich weiß, wie eine NPM Abhängigkeit von einem GitHub Release zu machen:NPM installieren/Abhängigkeit von einer GitHub Veröffentlichung Binary

"dependencies": { 
    "package-name": "user/repo#v1.0.0" 
} 

das ist schön, aber ich mag ein spezifisches binäres von dieser Version installieren .

Ich versuchte

"dependencies": { 
    "package-name": "https://github.com/user/repo/releases/download/v1.0.0/bin.tgz" 
} 

Aber ich gibt mir die folgende Fehlermeldung:

❯ 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 

Binary Release Vermögenswerte exist outside of GitHub und verwenden AWS S3.

Die URL github.com/user/repo/releases/download/v1.0.0/bin.tgz ist mit einem 302 Status und einem HTTP-Location-Header auf https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...

Umleitung Wenn ich direkt mit der S3 URL versuche ich einen ENAMETOOLONG Fehler bekam (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/...... 

Fragen:

  • Warum ist NPM nicht fo Nach der Weiterleitung?
  • Warum ein 404?
  • Gibt es eine Möglichkeit, eine NPM-Abhängigkeit mit dem Binär-Tarball einer GitHub-Version zu verknüpfen? Wie?

Mein Kontext und Bedürfnisse:

  • ich eine private GitHub-Repository vor "Bereitstellung"
  • Mein Paket muss gebaut werden müssen (transpilation, etc.)
  • Ich möchte um einen Tarball dieses Builds in meiner GitHub-Version zu "publizieren" und direkt auf meine NPM-Abhängigkeiten zu verweisen
  • Ich benutze einen CI-Dienst, um zu bauen, zu machen die Tarball und laden Sie sie neben dem GitHub Release
  • Ich möchte GitHub Release binär als NPM-Repository

Verwandte

Antwort

1

Github Releases basieren auf Git Tags.

"... Die Versionen basieren auf Git Tags."

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

Um eine Version mit einer Git-URL angeben, umfasst eine geeignete, wie ein Tag, am Ende als URL-Fragment Beispiel für einen Tag mit dem Namen 0.3.1.

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

Und eine andere Anzeige:

"dependencies": { 
    "myprivatemodule": "[email protected]:...#0.3.1" 
} 

Der snipped Teil (...) sollten ausgefüllt werden Kleid-Format benötigt werden, wenn der SSH-Zugriff nicht verfügbar ist:

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1" 

freundlich entnommen aus: npm install from Git in a specific version

0

Die 404 ist, weil Sie eine private Repo und beinhalten nicht die Authentifizierung in der URL.

öffentliche Repo:

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

private Repo:

  1. Erstellen Ihnen eine privaten Zugriffstoken https://github.com/settings/tokens
  2. Ihren eigenen HTTP-Proxy Erstellen Sie die Assertion von Version zum Download bereit. https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
  3. Fügen Sie den HTTP-Proxy-URL zu Ihrem 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: Sie yarn install verwenden können, die ich in meinen Projekten verwendet

+0

Können Sie in mehr erklären Wie konfigurierst du den http-Proxy? – line72