Cli: [BUG] `npm pack` wird erfolgreich abgeschlossen, auch wenn` main` nicht im Paket vorhanden ist

Erstellt am 15. Mai 2020  ·  3Kommentare  ·  Quelle: npm/cli

Was warum

Wir haben dies festgestellt, als eines der internen Pakete unseres Unternehmens einige Umgestaltungen vorgenommen und den Einstiegspunkt an eine andere Stelle im Repository verschoben hat, ohne daran zu denken, die main in package.json zu aktualisieren. Das Endergebnis war, dass npm pack glücklich erstellt wurde und die Veröffentlichung eines Pakets, das keine Chance hatte, ordnungsgemäß zu funktionieren, ermöglichte.

Wann

Wenn npm pack und damit npm publish werden

Wo

Wie

Aktuelles Verhalten

npm pack nicht, dass main im Tarball vorhanden ist, was das Erstellen und Veröffentlichen von Paketen, die von Verbrauchern nicht verwendet werden können, etwas einfacher macht.

Schritte zum Reproduzieren

  • Erstellen Sie ein leeres Verzeichnis
  • npm init und erstellen Sie alles mit Standardwerten. Sie erhalten ein package.json wie dieses
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • Führen Sie npm pack in diesem Verzeichnis aus und beobachten Sie, dass der Tarball glücklich erstellt wurde
npm notice
npm notice 📦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

Es gibt kein index.js . Wenn dieses Paket also jemals versucht würde, verwendet zu werden, würde es nicht funktionieren.

Erwartetes Verhalten

  • npm pack würde mit einem Exit-Code ungleich Null beendet, was auch dazu führen würde, dass npm publish fehlschlägt und Pakete verhindert werden, deren Tarballs nicht die main aus den package.json von der Veröffentlichung in einer Registrierung.

Die

Unser Unternehmen ist darauf gestoßen, als es versuchte, in unserer internen Registrierung zu veröffentlichen.

Verweise

  • n / A
Bug

Hilfreichster Kommentar

Das klingt vernünftig. Aus irgendeinem Grund hat mein Unternehmen npm pack als Test verwendet, um festzustellen, ob Veröffentlichungen erfolgreich abgeschlossen werden. npm publish --dry-run ist wahrscheinlich ein besserer Scheck.

Alle 3 Kommentare

Ich bin mir nicht sicher, ob dies besser als Fehler für npm-packlist geeignet ist. Ich bin mir nicht ganz sicher, wie die npm Organisation die Trennung der Bedenken zwischen den beiden aufrechterhalten will. Dh sollte npm-packlist einfach blind eine Liste von Dateien zurückgeben, die versuchen sollten, ohne Validierung aufgenommen zu werden, und diese Validierung höherer Ordnung in allen Paketen belassen, die die Funktionalität von npm-packlist möchten ?

Dies ist nicht der Job von npm-packlist, sondern der Job von npm publish , wenn überhaupt.

Das klingt vernünftig. Aus irgendeinem Grund hat mein Unternehmen npm pack als Test verwendet, um festzustellen, ob Veröffentlichungen erfolgreich abgeschlossen werden. npm publish --dry-run ist wahrscheinlich ein besserer Scheck.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen