node node.js npm npmignore

node.js - angular y node js



¿Debo anular mis pruebas? (3)

Como probablemente hayas encontrado, NPM no dice específicamente qué debería ir allí, sino que tienen una lista de archivos ignorados por defecto . Muchas personas ni siquiera lo usan, ya que todo en su .gitignore es ignorado en npm por defecto si .npmignore no existe. Además, muchos archivos ya se ignoran por defecto, independientemente de la configuración, y algunos archivos siempre se excluyen de ser ignorados, como se indica en el enlace de arriba.

No hay mucha información oficial sobre lo que siempre debería estar allí porque es básicamente un subconjunto de .gitignore , pero por lo que he .gitignore de usar node durante 5 años ish, esto es lo que he pensado.

Nota: Por producción me refiero a cualquier momento en que su módulo sea utilizado por alguien y no se desarrolle en el módulo mismo.

Fuentes compiladas cruzadas de prelanzamiento

Pros : si está utilizando un lenguaje que compila en forma cruzada en JavaScript, puede precompilar antes del lanzamiento y no incluir archivos .coffee en su paquete, pero sí seguirles en su repositorio de git.

Crear archivos sobrantes

Pros : las personas que usan cosas como node-gyp pueden tener archivos de objetos que se generan durante una compilación que nunca deberían incluirse en el paquete. Contras : esto siempre debe ir al .gitignore todos modos. Debe colocar estas cosas aquí si está usando un archivo .npmignore ya que anula .gitignore desde el punto de vista de npm.

Pruebas

Pros : Menos equipaje en su código de producción. Contras : no se pueden ejecutar pruebas en entornos en vivo en la pequeña posibilidad de que exista una falla específica del sistema, como una versión desactualizada de la ejecución del nodo que hace que falle una prueba.

Configuraciones de integración continua / Meta archivos

Pros : Nuevamente, menos equipaje. Cosas como .travis.yml no son necesarias para usar, probar o ver el código.

Documentos no readme y ejemplos de código

Pros : Menos equipaje. Algunas personas existen en la escuela de pensamiento en la que si no puede expresar al menos la funcionalidad mínima viable en su archivo Léame, su módulo es demasiado grande. Contras : las personas no pueden ver documentación exhaustiva y ejemplos de código en su propio sistema de archivos. Tendrían que visitar el repositorio (que también requiere una conexión a Internet).

Objetos Github-páginas

Pros : Ciertamente, no es necesario que ensucie sus lanzamientos con los archivos CNAME o con el marcador de posición index.html s si usa su módulo también sirve como un repositorio de gh-pages .

bower.json y amigos

Pros : si decide crear sus dependencias antes del lanzamiento, no necesita que el usuario final instale bower y luego instale más cosas con eso. Personalmente, mantendría esas cosas en el paquete. Cuando realizo una npm install , solo debería confiar en npm y no en otras fuentes externas.

Básicamente, debe usarlo siempre que haya algo que desee mantener fuera de su paquete npm pero no fuera de su repositorio npm. No es una larga lista de elementos, pero npm preferiría construir en la funcionalidad que tener personas atrapadas con objetos irrelevantes en su paquete.

¿Qué debería poner exactamente en .npmignore ?

Pruebas? Cosas como .travis.yml , .jshintrc ? ¿Algo que no se necesita al ejecutar el módulo (excepto el archivo Léame)?

No puedo encontrar ninguna guía sobre esto.


Estoy de acuerdo con la respuesta breve y sintética de lante y la gran respuesta de SamT :

  • No debe incluir sus pruebas en su paquete.
  • Su paquete solo debe contener archivos de tiempo de ejecución de producción.
  • Eso hará que su paquete sea más sencillo y más rápido para ser descargado.

Mi contribución a esas respuestas:

.npmignore es la forma de la lista negra para lograr la selección del archivo del paquete. Pero de una manera más práctica, puede incluir en la lista blanca los archivos que necesita incluir en su paquete docs.npmjs.com/files/package.json#files en su paquete. Json:

{ "files": [ "lib/", "index.js" ] }

Creo que es más simple, a prueba de futuro y con mejor semántica;)


Solo para aclarar, cada vez que alguien haga npm install your-library , npm descargará todos los archivos fuente que incluya el repositorio, excepto los archivos que incluya en su .npmignore .

Sepa que las personas que instalen su biblioteca solo necesitarán que su biblioteca se ejecute, cualquier otra cosa no será necesaria.

Por ejemplo, cuando alguien instala una biblioteca, es probable que a él / ella no le importe su .travis.yml o sus archivos .jshintrc , o incluso algunas imágenes, archivos Grunt, documentación, etc.

.npmignore podría permitir que tu paquete npm tenga menos archivos y se descargue más rápido