webentwicklung-frage-antwort-db.com.de

npm installiere und baue ein gabelförmiges Github-Repo

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.

102
hughesjmh

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.

110
RyanZim

Update für Benutzer von npm 5:

Ab npm @ 5 sind prepublish Skripte veraltet.

Verwenden Sie prepare für Erstellungsschritte und prepublishOnly nur für den Upload.

Ich habe festgestellt, dass das Hinzufügen eines "prepare": "npm run build" Zu Skripten alle meine Probleme behoben hat.

6
Simon

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:

  1. Aktualisieren Sie die Datei package.json in Ihrem Forked-Repository, um Skripten ein Postinstall-Element hinzuzufügen. Führen Sie hier alles aus, was Sie benötigen, um die kompilierte Ausgabe zu erhalten (bevorzugt).
  2. Aktualisieren Sie Ihre Datei package.json und fügen Sie eine Nachinstallation hinzu, die das erforderliche Verzeichnis in node_modules aktualisiert.

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.

4
Mike B

Verwenden Sie einfach den Befehl npm install git+https://[email protected]/myRepo/angular-translate.git. Vielen Dank.

0
Bimal Jha