2012-09-21 10 views
7

Mein Editor erstellt Arbeitsbereichsdateien und Sicherungsordner, die für die Benutzer der von mir geschriebenen Software nicht von Interesse sind. Um zu vermeiden, dass ich meine editorspezifischen Ignores in jedem Projekt auflisten muss, versuche ich npm zu sagen, sie auf Benutzer- oder globaler Ebene zu ignorieren.Warum ehrt npm user/global npmignore nicht?

Leider habe ich kein Glück dabei. Das Ausführen von npm pack in meinem Projektordner, auch wenn ich den npm-Cache zuerst lösche, enthält sowohl die Arbeitsbereichsdatei als auch zwei Megabyte der Sicherungsdateien. (Für ein Projekt mit nur zehn Kilobyte Code!) Ich habe versucht, die ignore Konfigurationseinstellung, eine pro Benutzer .npmignore, und eine globale npmignore, alles ohne Erfolg.

Hier ist meine Ausgabe von npm config ls -l, auf relevante Abschnitte snipped:

; 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" 

und die (identischen) Inhalt C:\Users\benblank\.npmignore und C:\Users\benblank\AppData\Roaming\npm\etc\npmignore:

__history 
*.epp 

Was mache ich falsch? Ich verwende Windows 7, [email protected] und [email protected]

+0

Haben Sie es jemals gelöst? – laggingreflex

+1

['globalignorefile' ist" dokumentiert, aber nicht implementiert "] (https://groups.google.com/forum/#!topic/npm-/m2eQPMRrjIc), immer noch scheint es (v2.5). '/ etc/npmignore' funktioniert auch nicht. – laggingreflex

+1

[bekannter Fehler] (https://github.com/npm/npm/issues/2634) – laggingreflex

Antwort

2

npm hat einige wichtige outstanding issues bezogen auf Dateien.

Zum Glück gibt es eine noch bessere Alternative! Es ist die package.json files Eigenschaft.

Hier ist ein Beispiel von meinem delivr Projekt.

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

Warum ist es besser?

  1. Die interne Maschinerie macht diesen Mechanismus zuverlässiger.
  2. Es ist eine Whitelist anstelle einer Blacklist. In der Regel vorausgesetzt, Sie verwenden einen Ordner lib (oder ähnlich), gibt es weniger Dateien/Verzeichnisse, die Sie wollen enthalten vs diejenigen, die Sie wollen ausgeschlossen, so dass es prägnanter ist.
  3. Es ist DRY. Wenn eine .npmignore Datei vorhanden ist, wird npm nicht .gitignore für Ignoriermuster konsultieren, die häufig überlappende und sich wiederholende Informationen benötigt. Dieses Problem existiert nicht mit einer Whitelist.
  4. Eine Datei weniger im Repo. package.json ist bereits ein Manifest, das Ihr Paket definiert, und es macht sehr viel Sinn, dass diese Konfiguration dort lebt.
Verwandte Themen