Que dois-je exactement mettre dans .npmignore
?
Des tests? Des choses comme .travis.yml
, .jshintrc
? Tout ce qui n'est pas nécessaire lors de l'exécution du module (à l'exception du readme)?
Je ne trouve aucune indication à ce sujet.
Comme vous l'avez probablement constaté, NPM n'indique pas précisément ce qui doit y figurer, mais dispose d'une liste de fichiers ignorés par défaut . Beaucoup de gens ne l'utilisent même pas, car tout ce qui se trouve dans votre .gitignore
est ignoré dans npm
par défaut si .npmignore
n'existe pas. En outre, de nombreux fichiers sont déjà ignorés par défaut, quels que soient les paramètres, et certains fichiers sont toujours exclus, comme indiqué dans le lien ci-dessus.
Il n’ya pas beaucoup d’officiels sur ce qui devrait toujours être là car c’est essentiellement un sous-ensemble de .gitignore
, mais de ce que je déduis de l’utilisation du noeud pendant 5 ans, voici ce que j’ai proposé.
Remarque: Par production, je veux dire à tout moment où votre module est utilisé par quelqu'un et non pour se développer sur le module lui-même.
.coffee
dans votre paquet, mais les suivre dans votre référentiel git.node-gyp
peuvent avoir des fichiers objet générés lors d'une construction qui ne devraient jamais être insérés dans le paquet..gitignore
de toute façon. Vous devez placer ces éléments ici si vous utilisez déjà un fichier .npmignore
car il remplace .gitignore
du point de vue de npm..travis.yml
ne sont pas nécessaires pour utiliser, tester ou afficher le code. CNAME
ou un espace réservé index.html
s si vous utilisez votre module sert également de référentiel gh-pages
.npm install
, je ne devrais me fier qu’à npm et à aucune autre source externe.En principe, vous devriez ne jamais l’utiliser si vous souhaitez conserver quelque chose en dehors de votre paquet npm mais pas de votre référentiel npm. Ce n'est pas une longue liste d'éléments, mais npm préférerait intégrer la fonctionnalité plutôt que d'avoir des personnes bloquées avec des objets non pertinents dans leur package.
Je suis d'accord avec la réponse courte et synthétique de lante et La grande réponse de SamT :
Ma contribution à ces réponses:
.npmignore est le moyen blacklist de parvenir à la sélection du fichier de package. Mais de manière plus pratique, vous pouvez liste blanche les fichiers à inclure dans votre paquet en utilisant le champ files de votre paquet.json:
{
"files": [
"lib/",
"index.js"
]
}
Je pense que c'est plus simple, à l'épreuve du temps et avec une meilleure sémantique;)
Pour clarifier, à chaque fois que quelqu'un npm install your-library
, npm télécharge tous les fichiers source inclus dans le référentiel, à l'exception des fichiers que vous incluez dans votre .npmignore
.
Sachez que les personnes installant votre bibliothèque n’auront besoin que de votre bibliothèque en cours d’exécution, aucune autre opération ne sera nécessaire.
Par exemple, quand quelqu'un installe une bibliothèque, c'est probablement qu'il ne se soucie pas de vos fichiers .travis.yml
ou .jshintrc
, ou même de certaines images, fichiers Grunt, documentation, etc.
.npmignore
pourrait permettre à votre paquet npm d'avoir moins de fichiers et plus rapide à télécharger
N'incluez pas vos tests. Souvent, les tests correspondent à 5 fois la taille du code réel. Tant que vos tests sont Github, etc., c'est suffisant.
Mais vous devez absolument tester votre paquet NPM dans son format publié. Créez des tests de fumée qui résident dans la base de code réelle, mais ne font pas partie de la suite de tests.
Vous pouvez en savoir plus sur le test de votre paquet après l'avoir archivé, ici: https://github.com/ORESoftware/r2g
Comment tester un résultat `npm publish`, sans réellement publier sur NPM?