Situazione
Voglio usare gulp e le relative catene di strumenti front-end negli ambienti di sviluppo ospitati da Windows. Sto colpendo un muro cercando di utilizzare plug-in gulp come Browser-Sync, perché il grafico della cartella node_modules si apre a ventaglio rendendo i percorsi dei file di Windows troppo lunghi per copiare i file. Vorrei un approccio pragmatico per gestire questo problema in questo momento su Windows, indipendentemente da ciò che la comunità di Node può o non può fornire per migliorare l'usabilità di npm su Windows in futuro.
2 domande
Esiste un flusso di lavoro npm per Windows che funziona nel modo previsto? "esegui il comando e installa i file" (ad es. paragonabile a npm su OSX, npm su Linux, ruby gems o anche nuget) Non voglio giocherellare con un mucchio di modifiche manuali ai file, collegamenti simbolici, ecc. npm su Windows.
Esiste un flusso di lavoro Cygwin ben documentato e stabile per l'esecuzione di npm e nodi per aggirare i limiti del percorso del file API di Windows?
Dettagli cruenti elencati di seguito ...
Problema generale
- L'esecuzione dell'installazione di npm da un prompt dei comandi standard di Windows non riesce su gerarchie node_modules profondamente nidificate.
- Secondo il thread del repository github di Joyent, questo è un problema riconosciuto senza soluzioni alternative appetibili per gli sviluppatori in ambienti incentrati su Windows. ( Davvero? )
- Il kernel NT supporta lunghezze di percorso file fino a 32.767 caratteri.
- MAXPATH dell'API di Windows è limitato a 260 caratteri.
- L'API di Windows gestisce le operazioni sui file per tutte le principali shell di Windows e quant'altro, inclusi: Explorer, CMD, Powershell, MYSgit bash, ecc. ( MS davvero? Da quanto tempo esiste NTFS? )
- Cygwin supporta percorsi di file lunghi, ma npm.cmd non funziona immediatamente a causa della formattazione crlf. Ho provato la trasformazione DOS2Unix su npm per farlo funzionare con Cygwin, ma sembrano esserci altri problemi con questo.
Il mio attuale hack
- Creare una cartella "n" come area di gestione temporanea nella directory principale di C: \, perché questo accorcia il percorso della mia cartella.
- Esegui npm nella cartella "n" per installare i moduli per qualsiasi cosa mi serva.
- Avvia Cygwin e usa cp per copiare la cartella node_modules in un progetto di destinazione.
- Risciacquare e ripetere quando le dipendenze cambiano o quando ho bisogno di avviare un nuovo progetto.
Altre soluzioni sgradevoli
I collegamenti simbolici possono essere utilizzati per abbreviare i percorsi dei file, ma si tratta di hack kludgy. Man mano che l'ecosistema npm cresce, le catene di dipendenze annidate diventeranno troppo lunghe e questa soluzione alternativa diventerà inutilizzabile.
L'aggiunta di TUTTE le dipendenze al file package.json della cartella principale è stata menzionata in un thread in cui mi sono imbattuto. Sebbene questo approccio appiattirà la struttura delle cartelle e impedirà il caricamento di moduli duplicati, questa soluzione alternativa sembra innaturale. Uccide anche l'usabilità, la durata e la produttività di npm, perché devi armeggiare con file e cartelle post-installazione manualmente o con alcuni script hacky. L'approccio è anche vulnerabile alla stessa sorte che l'approccio Link simbolici potrebbe eventualmente subire.