Dies ist keine völlig neue Frage, aber ich habe mich schon lange umgesehen und Probleme, eine Lösung zu finden.
Ich benutze ein Modul für meine angular App namens angle-translate. Allerdings musste ich ein paar kleine Änderungen am Quellcode vornehmen, damit alles so funktioniert, wie ich es gerne hätte , und jetzt möchte ich diese Änderungen auf npm install
beibehalten. Ein Kollege schlug vor, das Repo des Quellcodes zu teilen und auf mein gespaltenes Repo als Abhängigkeit zu verweisen, was ich auf diese Weise versucht habe, z.
npm install https://github.com/myRepo/angular-translate
npm install https://github.com/myRepo/angular-translate/archive/master.tar.gz
Das erste gibt mir ein Verzeichnis wie dieses ohne Build. Nur eine package.json, .npmignore und einige Markdown-Dateien
-angular-translate
.npmignore
.nvmrc
CHANGELOG.md
package.json
etc
Das zweite npm install
Gibt mir das volle Repo, aber ich bekomme wieder keinen Build wie wenn ich den Befehl npm install angular-translate
Benutze. Ich habe einige Diskussionen über das Ausführen des Vorveröffentlichungsskripts gesehen, bin mir jedoch nicht sicher, wie dies bei der Installation aller Module geschehen soll. Ich habe auch versucht, den Fork als mein eigenes Modul in der npm-Registrierung zu veröffentlichen, aber ich bekomme wieder keinen Build und bin mir nicht sicher, ob das das Richtige ist ...
Ich entschuldige mich für meine Unkenntnis zu diesem Thema. Ich habe nicht viel Erfahrung mit npm. Würde mich über Feedback zu diesem Thema freuen. Es scheint, als ob es ein häufig genug auftretendes Problem sein könnte, wenn Änderungen am Quellcode eines Pakets vorgenommen werden müssen. Vielleicht gibt es eine bessere Lösung? Vielen Dank im Voraus für Ihre Hilfe.
Versuchen Sie npm install <ghusername>/<repoName>
, Wobei <ghUsername>
Ihr GitHub-Benutzername ist (ohne @
) Und <repoName>
Der Name des Repositorys ist. Das sollte es richtig installieren. Sie möchten höchstwahrscheinlich das Flag --save
Oder --save-dev
Mit dem Befehl install verwenden, um die Abhängigkeit in Ihrem package.json
Zu speichern.
Wenn das nicht richtig funktioniert, überprüfen Sie den Inhalt Ihrer .npmignore
- Datei.
Keine Panik, wenn der Installationsbefehl lange dauert. Die Installation aus einem Git-Repository ist langsamer als die Installation aus der npm-Registrierung.
Bearbeiten:
Ihr Problem ist, dass in Ihrem Fall dist/
Nicht an das Repo gebunden ist (da es sich um das .gitignore
Handelt). Dort lebt der eigentliche Code. dist/
Wird aus den Dateien in src/
Erstellt, bevor das Paket in der npm-Registrierung veröffentlicht wird, aber dist/
Wird niemals für das Repo festgeschrieben.
Es ist hässlich, aber in diesem Fall müssen Sie dist/
Aus dem Feld .gitignore
Entfernen und dann ausführen:
npm run build
git add .
git commit
git Push
(Stellen Sie sicher, dass Sie zuerst npm install
Ausgeführt haben.)
Sie sollten dann in der Lage sein, von Github zu installieren.
Es gibt möglicherweise eine andere Möglichkeit, dies mithilfe eines Skripts postinstall
zu tun, aber ich bin nicht sicher, ob dies möglich ist. Ich habe es nie versucht.
Update für Benutzer von npm 5:
Ab npm @ 5 sind
prepublish
Skripte veraltet.Verwenden Sie
prepare
für Erstellungsschritte undprepublishOnly
nur für den Upload.
Ich habe festgestellt, dass das Hinzufügen eines "prepare": "npm run build"
Zu Skripten alle meine Probleme behoben hat.
Um die ausgezeichnete Antwort von @ RyanZim zu vervollständigen, ist postinstall
definitiv eine gültige Option dafür.
Führen Sie einen der folgenden Schritte aus:
Wenn Sie ein Repository für andere Personen erstellt haben, ist es möglicherweise sinnvoll, ein Problem zu melden, um zu veranschaulichen, dass die Installation ihres Pakets über GitHub nicht funktioniert, da es nicht die erforderlichen Mittel zum Erstellen des Skripts bietet. Von dort aus können sie entweder einen PR akzeptieren, um das Problem mit einer Nachinstallation zu beheben, oder sie können ihn ablehnen und Sie können Schritt 2 ausführen.
Verwenden Sie einfach den Befehl npm install git+https://[email protected]/myRepo/angular-translate.git
. Vielen Dank.