2012-09-21 23 views
7

Mi editor produce archivos de espacio de trabajo y carpetas de respaldo que no interesan a los usuarios del software que escribo. Para evitar tener que enumerar mis ignoramientos específicos del editor en cada proyecto, intento decirle a npm que los ignore a nivel de usuario o global.¿Por qué npm no está cumpliendo con npmignore de usuario/global?

Lamentablemente, no tengo suerte para hacerlo. Ejecutando npm pack dentro de la carpeta de mi proyecto, incluso si borro primero la memoria caché npm, incluye tanto el archivo del área de trabajo como dos megabytes de los archivos de copia de seguridad. (Para un proyecto con solo diez kilobytes de código!) He intentado la configuración de configuración ignore, un usuario por .npmignore, y un npmignore global, todo sin ningún efecto.

Aquí está mi salida de npm config ls -l, cortó a las secciones pertinentes:

; userconfig C:\Users\benblank\.npmrc 
ignore = "__history *.epp" 

; builtin config undefined 
prefix = "C:\\Users\\benblank\\AppData\\Roaming\\npm" 

; default values 
globalignorefile = "C:\\Users\\benblank\\AppData\\Roaming\\npm\\etc\\npmignore" 
userignorefile = "C:\\Users\\benblank\\.npmignore" 

y el contenido (idénticos) de C:\Users\benblank\.npmignore y C:\Users\benblank\AppData\Roaming\npm\etc\npmignore:

__history 
*.epp 

¿qué estoy haciendo mal? Estoy ejecutando Windows 7, [email protected] y [email protected]

+0

¿Alguna vez lo resolvió? – laggingreflex

+1

['globalignorefile' está" documentado pero no implementado "] (https://groups.google.com/forum/#!topic/npm-/m2eQPMRrjIc), aún parece (v2.5). '/ etc/npmignore' tampoco funciona. – laggingreflex

+1

[error conocido] (https://github.com/npm/npm/issues/2634) – laggingreflex

Respuesta

2

npm tiene algunos de los principales outstanding issues relacionados con npmignore archivos.

¡Afortunadamente existe una alternativa aún mejor! Es la propiedad package.json files.

Aquí hay un ejemplo de mi proyecto delivr.

"files": [ 
    "lib", 
    "index.js" 
] 

¿Por qué es mejor?

  1. La maquinaria interna hace que este mecanismo sea más confiable.
  2. Es una lista blanca en lugar de una lista negra. Normalmente, suponiendo que utiliza una carpeta lib (o similar), hay menos archivos/directorios que desee incluidos frente a los que desee excluidos, por lo que es más sucinto.
  3. Es DRY. Si existe un archivo .npmignore, npm no consultará .gitignore para ignorar los patrones, que a menudo necesitan información superpuesta y repetitiva. Este problema no existe con una lista blanca.
  4. Un archivo menos en el repositorio. package.json ya es un manifiesto que define su paquete y tiene mucho sentido que viva esta configuración.
Cuestiones relacionadas