Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
Originally filed: 2018-07-23T20:19:41.160Z
Je rencontre cela dans npm 6.13.0 . pack
inclura les fichiers ignorés par .gitignore
et/ou .npmignore
s'ils sont répertoriés dans files
. Cela est particulièrement visible lorsque ces fichiers se trouvent dans un répertoire où l'on souhaite inclure d'autres fichiers du répertoire.
Une solution de contournement qui semble fonctionner pour moi consiste à ajouter "!.DS_Store"
comme dernière entrée dans le tableau files
(l'ordre semble avoir de l'importance).
Je pense que je vois quelque chose de similaire depuis npm 6.12.1 : Mon .gitignore
spécifie d'exclure npm-shrinkwrap.json
et le répertoire /build/
. package.json
répertorie explicitement le répertoire build
dans la section files
. Dans le cadre de ma procédure de construction, je produis un npm-shrinkwrap.json
dans le répertoire racine du module, qui est ensuite copié dans le répertoire build
.
Avec npm 6.4.1, ~6.7, ~6.9, ~6.10, ~6.11 et 6.12.0, le fichier packagé (à partir de npm pack
) ne contient que build/npm-shrinkwrap.json
, mais avec 6.12.1 et versions ultérieures il comprend à la fois build/npm-shrinkwrap.json
_et_ npm-shrinkwrap.json
.
(La communauté est en panne/en lecture seule en ce moment, si ce n'est pas le même problème, je voudrais m'excuser !)
il me semble étrange d'inclure un fichier d'emballage dans n'importe quelle partie d'un package publié, mais cela n'aurait de toute façon un effet qu'à la racine - pourquoi votre processus de construction en place-t-il une copie ?
C'est certainement une bonne question.
Je l'ai dans le répertoire build/ dans le cadre d'une autre étape de build qui prend le répertoire build/ et crée une image de conteneur docker. L'idée était d'exécuter npm test
etc une fois en dehors du docker, puis de faire en sorte que le fichier d'emballage accélère le processus du docker (en laissant le npm install
intérieur du docker récupérer exactement les mêmes fichiers). Cela servirait alors également de documentation sur ce qui a été utilisé pour la construction. Le processus a simplement copié le npm-shrinkwrap.json dans le répertoire de construction.
Le correctif pour moi maintenant consiste à utiliser mv
plutôt que cp
pour placer le fichier dans le répertoire build/
.
EDIT : correction/solution de contournement pour moi fonctionne, mais je crains un peu qu'en raison de ce changement de comportement, les packages sur les registres puissent contenir par inadvertance des fichiers qu'ils ne devraient pas contenir - j'ai trouvé cela par accident à cause d'une autre partie de mon système vérifiant la présence de fichiers npm-shrinkwrap.json
.
Commentaire le plus utile
Je rencontre cela dans npm 6.13.0 .
pack
inclura les fichiers ignorés par.gitignore
et/ou.npmignore
s'ils sont répertoriés dansfiles
. Cela est particulièrement visible lorsque ces fichiers se trouvent dans un répertoire où l'on souhaite inclure d'autres fichiers du répertoire.Une solution de contournement qui semble fonctionner pour moi consiste à ajouter
"!.DS_Store"
comme dernière entrée dans le tableaufiles
(l'ordre semble avoir de l'importance).