Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
Originally filed: 2018-07-23T20:19:41.160Z
Ich begegne diesem in npm 6.13.0 . pack
schließt Dateien ein, die von .gitignore
und/oder .npmignore
ignoriert werden, wenn sie in files
. Es ist am auffälligsten, wenn sich diese Dateien in einem Verzeichnis befinden, in das andere Dateien in dem Verzeichnis aufgenommen werden sollen.
Eine Problemumgehung, die für mich zu funktionieren scheint, besteht darin, "!.DS_Store"
als letzten Eintrag im Array files
hinzuzufügen (die Reihenfolge scheint wichtig zu sein).
Ich denke, ich sehe etwas Ähnliches seit npm 6.12.1: Mein .gitignore
gibt an, npm-shrinkwrap.json
und das /build/
Verzeichnis auszuschließen. package.json
listet das Verzeichnis build
explizit im Abschnitt files
auf. Als Teil meiner Build-Prozedur erzeuge ich ein npm-shrinkwrap.json
im Modul-Root-Verzeichnis, das dann in das build
Verzeichnis kopiert wird.
Mit npm 6.4.1, ~6.7, ~6.9, ~6.10, ~6.11 und 6.12.0 enthält die gepackte Datei (ab npm pack
) nur build/npm-shrinkwrap.json
, aber ab 6.12.1 und höher beinhaltet sowohl build/npm-shrinkwrap.json
_und_ npm-shrinkwrap.json
.
(Community ist gerade down/schreibgeschützt, wenn dies nicht das gleiche Problem ist, möchte ich mich entschuldigen!)
Es erscheint mir seltsam, eine Shrinkwrap-Datei in einen beliebigen Teil eines veröffentlichten Pakets einzufügen, aber es würde sowieso nur einen Effekt im Stammverzeichnis haben - warum legt Ihr Build-Prozess eine Kopie dort ab?
Das ist sicherlich eine gute Frage.
Ich habe es im build/-Verzeichnis als Teil eines anderen Build-Schritts, der das build/-Verzeichnis verwendet und ein Docker-Container-Image erstellt. Die Idee war, npm test
usw. einmal außerhalb des Dockers auszuführen und dann die Shrinkwrap-Datei den Docker-Prozess beschleunigen zu lassen (indem das npm install
im Docker genau die gleichen Dateien aufnimmt). Dies würde dann auch als Dokumentation über die Baunutzung dienen. Der Prozess kopierte einfach die npm-shrinkwrap.json in das Build-Verzeichnis.
Fix für mich ist jetzt, mv
anstelle von cp
zu verwenden, um die Datei in das Verzeichnis build/
.
BEARBEITEN: Fix/Workaround für mich funktioniert, aber ich bin ein bisschen besorgt, dass Pakete in den Registrierungen aufgrund dieser Verhaltensänderung versehentlich Dateien enthalten könnten, die sie nicht enthalten sollten - ich habe dies zufällig aufgrund eines anderen Teils gefunden meines Systems auf das Vorhandensein von npm-shrinkwrap.json
Dateien überprüft.
Hilfreichster Kommentar
Ich begegne diesem in npm 6.13.0 .
pack
schließt Dateien ein, die von.gitignore
und/oder.npmignore
ignoriert werden, wenn sie infiles
. Es ist am auffälligsten, wenn sich diese Dateien in einem Verzeichnis befinden, in das andere Dateien in dem Verzeichnis aufgenommen werden sollen.Eine Problemumgehung, die für mich zu funktionieren scheint, besteht darin,
"!.DS_Store"
als letzten Eintrag im Arrayfiles
hinzuzufügen (die Reihenfolge scheint wichtig zu sein).