Frage Soll ich meine Tests durchführen?


Was genau sollte ich hineinlegen? .npmignore?

Tests? Zeug wie .travis.yml, .jshintrc? Alles, was beim Ausführen des Moduls nicht benötigt wird (außer der Readme)?

Ich kann dazu keine Anleitung finden.


76
2017-08-04 18:05


Ursprung


Antworten:


Wie Sie wahrscheinlich herausgefunden haben, gibt NPM nicht wirklich an, was genau dort hineingehen soll, sondern sie haben eine Liste der standardmäßig ignorierten Dateien. Viele Leute benutzen es nicht einmal als alles in Ihrem .gitignore wird in ignoriert npm standardmäßig, wenn .npmignore existiert nicht. Darüber hinaus werden viele Dateien unabhängig von den Einstellungen bereits standardmäßig ignoriert, und einige Dateien werden immer ignoriert, wie im obigen Link beschrieben.

Es gibt nicht viel offizielles, was immer da sein sollte, weil es im Grunde eine Untermenge von .gitignore, aber aus dem, was ich bei der Verwendung von Knoten für 5 Jahre gesammelt habe, hier ist, was ich mir ausgedacht habe.

Hinweis: Von Produktion Ich meine jederzeit, wo dein Modul von jemandem benutzt wird und nicht auf dem Modul selbst entwickelt.


Vorkompilierte quellenkompilierte Quellen

Pros: Wenn Sie eine Sprache verwenden, die in JavaScript kompiliert, können Sie vor der Veröffentlichung vorkompilieren und nicht einschließen .coffee Dateien in Ihrem Paket, aber verfolgen Sie sie in Ihrem Git-Repository.

Erstellen Sie Dateireste

Pros: Leute, die Dinge wie node-gyp könnte Objektdateien haben, die während eines Builds erzeugt werden, die niemals in das Paket eingehen sollten. Nachteile: Dies sollte immer in die gehen .gitignore sowieso. Sie müssen diese Dinge hier hineinstellen, wenn Sie einen benutzen .npmignore Datei bereits beim Überschreiben .gitignore aus Sicht von npm.

Tests

Pros: Weniger Gepäck in Ihrem Produktionscode. Nachteile: Sie können keine Tests in Live-Umgebungen durchführen, wenn nur ein systemspezifischer Fehler auftritt, z. B. wenn eine veraltete Version des Knotens ausgeführt wird und ein Test fehlschlägt.

Kontinuierliche Integrationseinstellungen / Meta-Dateien

Pros: Nochmals, weniger Gepäck. Dinge wie .travis.yml sind nicht erforderlich, um den Code zu verwenden, zu testen oder anzuzeigen.

Nicht-Readme-Dokumente und Codebeispiele

Pros: Weniger Gepäck. Einige Leute existieren in der Schule der Gedanken, wo, wenn Sie nicht mindestens realisierbare Mindestfunktionalität in Ihrer Readme ausdrücken können, Ihr Modul zu groß ist. NachteileMenschen können keine vollständigen Dokumentationen und Codebeispiele auf ihrem eigenen Dateisystem sehen. Sie müssten das Repository besuchen (wozu auch eine Internetverbindung benötigt wird).

Github-Seiten Objekte

Pros: Du musst deine Veröffentlichungen sicher nicht mit Müll bestreuen CNAME Dateien oder Platzhalter index.htmls wenn Sie Ihr Modul verwenden, dient es als Doppel-Pflicht gh-pages Repository.

bower.json und Freunde

Pros: Wenn Sie sich entscheiden, Ihre Abhängigkeiten vor der Veröffentlichung einzubauen, brauchen Sie den Endbenutzer nicht, um Bower zu installieren, und installieren Sie dann mehr Dinge damit. Ich persönlich würde das Zeug im Paket behalten. Wenn ich eine mache npm installIch sollte mich nur auf npm und keine anderen externen Quellen verlassen.


Grundsätzlich sollten Sie es immer verwenden, wenn Sie etwas aus Ihrem npm-Paket heraushalten möchten, aber nicht aus Ihrem npm-Repository. Es ist keine lange Liste von Items, aber npm würde eher die Funktionalität einbauen, als wenn Leute mit irrelevanten Objekten in ihrem Paket stecken bleiben.


74
2017-08-04 19:13



Ich bin einverstanden mit lante's kurze und synthetische Antwort und SamTs große Antwort:

  • Sie sollten Ihre Tests nicht in Ihr Paket aufnehmen.
  • Ihr Paket sollte nur Produktionslaufzeitdateien enthalten.
  • Dadurch wird Ihr Paket einfacher und schneller zum Dowloaden.

Mein Beitrag zu diesen Antworten:

.npmignore ist der schwarze Liste Möglichkeit zur Auswahl der Paketdatei. Aber auf eine praktischere Weise können Sie Whitelist Dateien, die Sie in Ihr Paket aufnehmen müssen Verwenden Sie das Feld Dateien in deinem Paket.json:

{
  "files": [
    "lib/",
    "index.js"
  ]
}

Ich denke das ist einfacher, zukunftssicher und hat eine bessere Semantik;)


46
2018-05-24 18:56



Nur um zu klären, wann immer jemand es tut npm install your-library, npm lädt alle Quelldateien herunter, die das Repo enthält, mit Ausnahme von Dateien, die Sie in Ihr Repository einschließen .npmignore.

Wissen Sie, dass Benutzer, die Ihre Bibliothek installieren, nur Ihre Bibliothek benötigen, alles andere wird nicht benötigt.

Zum Beispiel, wenn jemand eine Bibliothek installiert, ist es wahrscheinlich, dass er / sie sich nicht um Ihre kümmert .travis.yml oder Ihre .jshintrc Dateien oder sogar einige Bilder, Grunt-Dateien, Dokumentation usw.

.npmignore könnte Ihr npm-Paket weniger Dateien enthalten und schneller heruntergeladen werden


15
2017-08-04 19:12



Füge deine Tests nicht ein. Oft sind Tests wie 5x die Größe der tatsächlichen Codebasis. Solange deine Tests Github usw. sind, ist das gut genug.

Aber was Sie unbedingt tun sollten, ist Ihr NPM-Paket zu testen in seinem veröffentlichten Format. Erstellen Sie einige Rauchtests, die sich in der eigentlichen Codebasis befinden, jedoch nicht Teil der Testsuite sind.

Sie können über das Testen Ihres Pakets nach dem Tarbieren lesen, hier: https://github.com/ORESoftware/r2g

Wie testet man ein `npm publish` Ergebnis, ohne tatsächlich in NPM zu publizieren?


0
2018-06-27 22:59