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.
Wenn npm pack
und damit npm publish
werden
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.
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"
}
npm pack
in diesem Verzeichnis aus und beobachten Sie, dass der Tarball glücklich erstellt wurdenpm 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.
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.Unser Unternehmen ist darauf gestoßen, als es versuchte, in unserer internen Registrierung zu veröffentlichen.
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.
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.