Que dois-je mettre exactement .npmignore ?
Des tests? Des trucs comme .travis.yml, .jshintrc? Tout ce qui n'est pas nécessaire lors de l'exécution du module (sauf le readme)?
Je ne trouve aucune indication à ce sujet.
Que dois-je mettre exactement .npmignore ?
Des tests? Des trucs comme .travis.yml, .jshintrc? Tout ce qui n'est pas nécessaire lors de l'exécution du module (sauf le readme)?
Je ne trouve aucune indication à ce sujet.
.npmignoreou "files"( docs.npmjs.com/files/package.json#files ).
Réponses:
Comme vous l'avez probablement constaté, NPM n'indique pas vraiment ce qui devrait y entrer, mais plutôt 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 .gitignoreest ignoré npmpar défaut s'il .npmignoren'existe pas. De plus, de nombreux fichiers sont déjà ignorés par défaut quels que soient les paramètres et certains fichiers sont toujours exclus de l'ignorance, comme indiqué dans le lien ci-dessus.
Il n'y a pas beaucoup d'officiel sur ce qui devrait toujours être là parce que c'est fondamentalement un sous-ensemble de .gitignore, mais d'après ce que je retiens de l'utilisation de node pendant 5 ans, voici ce que j'ai trouvé.
Remarque: Par production, j'entends tout moment où votre module est utilisé par quelqu'un et non pour se développer sur le module lui-même.
.coffeefichiers dans votre package, mais continuer à les suivre dans votre référentiel git.node-gyppeuvent avoir des fichiers objets générés lors d'une construction qui ne devraient jamais entrer dans le package..gitignoretoute façon. Vous devez placer ces éléments ici si vous utilisez .npmignoredéjà un fichier car il remplace .gitignorele point de vue de npm..travis.ymlne sont pas nécessaires pour utiliser, tester ou afficher le code.CNAMEfichiers ou des espaces réservés index.htmlsi vous utilisez votre module sert également de gh-pagesréférentiel à double fonction .npm install, je ne devrais compter que sur npm et aucune autre source externe.En gros, vous devriez jamais l'utiliser s'il y a quelque chose que vous souhaitez garder hors de votre paquet npm mais pas en dehors de votre référentiel npm. Ce n'est pas une longue liste d'éléments, mais npm préfère intégrer la fonctionnalité plutôt que d'avoir des gens coincés avec des objets non pertinents dans leur package.
Je suis d'accord avec la réponse courte et syntétique de Lante et la grande réponse de SamT :
Ma contribution à ces réponses:
.npmignore est le moyen de la liste noire pour réaliser la sélection de fichiers de package. Mais de manière plus pratique, vous pouvez ajouter à la liste blanche les fichiers que vous devez inclure dans votre package en utilisant le champ files de votre package.json:
{
"files": [
"lib/",
"index.js"
]
}
Je pense que c'est plus simple, à l'épreuve du temps et que la sémantique est meilleure;)
npm testsur tous les node_modules peut vous donner un indice si quelque chose fonctionne différemment dans un certain environnement.
.npmignore. files: ["lib", "!lib/**/*.test.js"]. :)
Juste pour clarifier, à chaque fois que quelqu'un le fera npm install your-library, npm téléchargera tous les fichiers source inclus dans le dépôt, à l'exception des fichiers que vous incluez dans votre fichier .npmignore.
Sachez que les personnes installant votre bibliothèque n'auront besoin que de votre bibliothèque en cours d'exécution, rien d'autre ne sera nécessaire.
Par exemple, quand quelqu'un installe une bibliothèque, c'est probablement qu'il / elle ne se soucie pas de .travis.ymlvos .jshintrcfichiers ou de vos fichiers, ou même de certaines images, fichiers Grunt, documentation, etc.
.npmignore pourrait laisser votre package npm avoir moins de fichiers et être téléchargé plus rapidement
.npmignoren'affecte pas directement ce qui est téléchargé , cela affecte ce qui entre dans votre package lorsque vous publiez et téléchargez. Cela crée indirectement des fichiers plus petits à télécharger.
N'incluez pas vos tests. Souvent, les tests sont 5x la taille de la base de code réelle. Tant que vos tests sont sur Github, etc., cela suffit.
Mais ce que vous devez absolument faire est de tester votre package 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 package après l'avoir archivé, ici: https://github.com/ORESoftware/r2g
Comment tester un résultat `npm publish`, sans réellement publier sur NPM?
npm install yourlibrary, par exemple.travis.ymlet.jshintrc