Lage
Ich möchte gulp und verwandte Front-End-Toolketten in von Windows gehosteten Entwicklungsumgebungen verwenden. Ich stoße an eine Wand und versuche, Gulp-Plug-Ins wie Browser-Sync zu verwenden, da das Ordnerdiagramm node_modules die Windows-Dateipfade zu lang macht, um die Dateien zu kopieren. Ich hätte gerne einen pragmatischen Ansatz, um dieses Problem derzeit unter Windows zu lösen, unabhängig davon, was die Node-Community möglicherweise bereitstellt oder nicht, um die Benutzerfreundlichkeit von npm unter Windows in Zukunft zu verbessern.
2 Fragen
Gibt es einen npm-Workflow für Windows, der genau so funktioniert, wie er beabsichtigt war? "Führen Sie den Befehl aus und installieren Sie die Dateien" (z. B. vergleichbar mit npm unter OSX, npm unter Linux, Ruby Gems oder sogar Nuget) Ich möchte nicht jedes Mal mit einer Reihe manueller Dateibearbeitungen, Symlinks usw. herumspielen npm unter Windows.
Gibt es einen gut dokumentierten, stabilen Cygwin-Workflow für die Ausführung von npm und Knoten, um die Pfadbeschränkungen für Windows-API-Dateien zu umgehen?
Gory Details unten aufgeführt ...
Allgemeines Problem
- Das Ausführen der npm-Installation an einer Standard-Windows-Eingabeaufforderung schlägt in tief verschachtelten Hierarchien von node_modules fehl.
- Laut Joyents Github-Repo-Thread ist dies ein anerkanntes Problem ohne angenehme Problemumgehungen für Entwickler in Windows-zentrierten Umgebungen. ( Wirklich? )
- Der NT-Kernel unterstützt Dateipfadlängen von bis zu 32.767 Zeichen.
- MAXPATH der Windows-API ist auf 260 Zeichen begrenzt.
- Die Windows-API verarbeitet Dateivorgänge für alle wichtigen Windows-Shells und vieles mehr, einschließlich: Explorer, CMD, Powershell, MYSgit-Bash usw. ( MS wirklich? Wie lange gibt es NTFS schon? )
- Cygwin unterstützt lange Dateipfade, aber npm.cmd funktioniert aufgrund der CRF-Formatierung nicht sofort. Ich habe versucht, die DOS2Unix-Transformation auf npm durchzuführen, damit sie mit Cygwin funktioniert, aber es scheint andere Probleme damit zu geben.
Mein aktueller Hack
- Erstellen Sie einen "n" -Ordner als Staging-Bereich im Stammverzeichnis von C: \, da dies meinen Ordnerpfad verkürzt.
- Führen Sie npm im Ordner "n" aus, um Module für alles zu installieren, was ich brauche.
- Starten Sie Cygwin und kopieren Sie mit cp den Ordner node_modules in ein Zielprojekt.
- Spülen und wiederholen, wenn sich Abhängigkeiten ändern oder wenn ich ein neues Projekt starten muss.
Andere unangenehme Problemumgehungen
Symbolische Links können verwendet werden, um Dateipfade zu verkürzen, aber dies sind klobige Hacks. Wenn das npm-Ökosystem wächst, werden verschachtelte Abhängigkeitsketten zu lang und diese Problemumgehung wird unbrauchbar.
Das Hinzufügen ALLER Abhängigkeiten zur Datei package.json des Stammordners wurde in einem Thread erwähnt, auf den ich gestoßen bin. Obwohl dieser Ansatz die Ordnerstruktur reduziert und das Laden doppelter Module verhindert, ist diese Problemumgehung unnatürlich. Es beeinträchtigt auch die Benutzerfreundlichkeit, Haltbarkeit und Produktivität von npm, da Sie nach der Installation entweder manuell oder mit einigen hackigen Skripten an Dateien und Ordnern herumspielen müssen. Der Ansatz ist auch anfällig für das gleiche Schicksal, unter dem der Ansatz von Symbolic Links möglicherweise leiden wird.