web-dev-qa-db-fra.com

La propriété "files" est-elle nécessaire dans package.json?

Il semble que le package inclura tous les fichiers (qui ne sont pas ignorés), même si le package.json n'a pas "files" tableau.

Cette propriété est-elle nécessaire?

18
ᆼᆺᆼ

Pas vraiment, vous pouvez tout faire en utilisant .npmignore car tous les fichiers sont ajoutés, sauf indication contraire.

Vous pouvez voir plus ici

14
emilioriosvz

Vous pouvez penser à la propriété files dans package.json as whitelisting tous les fichiers qui devraient être inclus dans une version npm et .npmignore as blacklisting tous les fichiers qui ( ne doivent pas être inclus.

En règle générale, pour mes propres projets, j'utilise habituellement:

  • files lorsque mon projet contient de nombreux fichiers auxiliaires tels que des scripts de construction, des fichiers de configuration, etc., qui n'ont pas besoin d'être inclus dans une version npm
  • .npmignore lorsqu'il n'y a que quelques fichiers auxiliaires

Les deux options sont utiles dans différents scénarios dans mon esprit.

17
F Lekschas

Cet article fait un bon argument pour utiliser la propriété files (une liste blanche, comme l'a dit F Lekschas), au lieu d'utiliser .npmignore. Les raisons incluent:

  • L'utilisation de .npmignore entraîne l'ignorance de .gitignore, ce qui peut être inattendu par de nombreux développeurs.
  • Souvent, les développeurs conservent les informations d'identification dans un package à des fins de développement, et ils ne veulent certainement pas les inclure dans un package de production. L'utilisation d'une technique de liste blanche réduit considérablement la probabilité d'emballer accidentellement des trucs comme celui-ci.

Notez que certains fichiers sont inclus même si vous ne les ajoutez pas à la liste blanche . Ceux-ci inclus:

package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
The file in the “main” field

Modifié pour répondre au commentaire.

7
zumafra

Quand il n'y a pas de .npmignore fichier, le contenu de .gitignore sera utilisé. Soyez donc prudent lorsque vous ajoutez des répertoires générés comme dist/à ton .gitignore car ils pourraient ne pas être dans votre tarball de production. Lorsque cela se produit, vous pouvez utiliser le tableau "files" dans package.json pour les inclure, car les inclusions de ce fichier ne seront jamais exclues.

6
Yasammez