2015-07-26 4 views
57

Ich möchte ein npm-Paket veröffentlichen, das meine Quell- und Distributionsdateien enthält. Mein Github-Repository enthält den Ordner src, der JavaScript-Quelldateien enthält. Der Buildprozess generiert den Ordner dist, der die Verteilungsdateien enthält. Der Ordner dist wird natürlich nicht in das Github-Repository eingecheckt.Wie veröffentliche ich ein npm-Paket mit Verteilungsdateien?

Wie veröffentliche ich ein npm-Paket in einer Weise, dass wenn jemand npm install tut, erhalten sie src sowie dist Ordner? Derzeit, wenn ich npm publish von meinem Git-Repository ausführen, wird nur src Ordner veröffentlicht.

Meine package.json wie folgt aussieht:

{ 
    "name": "join-js", 
    "version": "0.0.1", 
    "homepage": "https://github.com/archfirst/joinjs", 
    "repository": { 
    "type": "git", 
    "url": "https://github.com/archfirst/joinjs.git" 
    }, 
    "main": "dist/index.js", 
    "scripts": { 
    "test": "gulp", 
    "build": "gulp build", 
    "prepublish": "npm run build" 
    }, 
    "dependencies": { 
    ... 
    }, 
    "devDependencies": { 
    ... 
    } 
} 

Antwort

40

Werfen Sie einen Blick auf die "Dateien" Feld der package.json Datei https://docs.npmjs.com/files/package.json#files

Aus der Dokumentation:

"Dateien" -Feld ist ein Array von Dateien, die in Ihrem Projekt enthalten sein sollen. Wenn Sie einen Ordner im Array benennen, enthält er auch die Dateien in diesem Ordner. (Es sei denn, sie würden von einer anderen Regel ignoriert werden.)

+3

Ich bin gespannt, ob das Feld "files" '.gitignore' oder' .npmignore' überschreibt (es sieht so aus, als würde ich das Dokument nicht lesen) - @Naresh bitte sagen Sie uns, welcher Weg gut funktioniert. – topheman

+3

"Dateien" ignoriert tatsächlich .gitignore. Ich habe "dist" in meinem .gitignore, aber in "files" eingeschlossen und der Ordner wird nach npm veröffentlicht. "Dateien" scheint zu sein, wie einige populäre Pakete wie expess und bluebird veröffentlichen (während es andere Pakete gibt, die die .npmignore Methode benutzen). Im Moment gehe ich mit "Dateien", weil es eine direktere Art zu sagen ist, was zu veröffentlichen ist. Aber danke euch beiden dafür, dass ihr mein Wissen über npm heute mindestens um das Doppelte erweitert habt! – Naresh

+0

Es ist erwähnenswert, dass, wenn "Dateien" angegeben sind, dann * nur * diese Dateien die einzigen sind, die in Ihrem Projekt enthalten sind (abgesehen von den nicht auszuschließenden Dateien wie package.json, etc.) – bmacnaughton

82

Wenn Sie npm publish, wenn Sie keine .npmignore Datei haben, werden npm Ihre .gitignore-Datei verwenden (in Ihrem Fall Sie ausgeschlossen, um die dist Ordner).

Um Ihr Problem, erstellen Sie eine .npmignore Datei auf der Grundlage Ihrer .gitignore Datei, ohne ignorieren die dist-Ordner zu lösen.

Soure: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

+1

danke für Ihre schnelle Antwort. Ihre Antwort ist sicherlich richtig, aber im Moment gehe ich mit dem von Eugene vorgeschlagenen "Akten" -Ansatz vor, wie es mir direkter erscheint. Bitte sehen Sie meinen detaillierten Kommentar unter seiner Antwort. – Naresh

+1

Vielen Dank! – corvid

Verwandte Themen