Situación
Quiero usar gulp y las cadenas de herramientas de front-end relacionadas en entornos de desarrollo alojados en Windows. Estoy golpeando una pared tratando de usar complementos de gulp como Browser-Sync, porque el gráfico de la carpeta node_modules se despliega haciendo que las rutas de los archivos de Windows sean demasiado largas para copiar los archivos. Me gustaría un enfoque pragmático para manejar este problema ahora mismo en Windows, independientemente de lo que la comunidad de Node pueda o no pueda proporcionar para mejorar la usabilidad de npm en Windows en el futuro.
2 preguntas
¿Existe un flujo de trabajo npm para Windows que simplemente funciona de la forma prevista? "ejecutar el comando y los archivos se instalan" (por ejemplo, comparable a npm en OSX, npm en Linux, ruby gems o incluso nuget) No quiero jugar con un montón de ediciones manuales de archivos, enlaces simbólicos, etc. cada vez que uso npm en Windows.
¿Existe un flujo de trabajo Cygwin estable y bien documentado para la ejecución de npm y nodos para solucionar los límites de la ruta de archivo de la API de Windows?
Detalles sangrientos enumerados a continuación ...
Problema general
- La ejecución de npm install desde un símbolo del sistema de Windows estándar falla en jerarquías de node_modules profundamente anidadas.
- Según el subproceso de repositorio github de Joyent, este es un problema reconocido sin soluciones alternativas aceptables para los desarrolladores en entornos centrados en Windows. ( ¿De verdad? )
- NT Kernel admite longitudes de ruta de archivo de hasta 32.767 caracteres.
- El MAXPATH de la API de Windows está limitado a 260 caracteres.
- La API de Windows maneja las operaciones de archivos para todos los shells principales de Windows y todo eso, incluyendo: Explorer, CMD, Powershell, MYSgit bash, etc. (¿ MS realmente? ¿Cuánto tiempo ha existido NTFS? )
- Cygwin admite rutas de archivo largas, pero npm.cmd no funciona de inmediato debido al formato crlf. Probé la transformación DOS2Unix en npm para que funcione con Cygwin, pero parece que hay otros problemas con esto.
Mi truco actual
- Cree una carpeta "n" como área de preparación en la raíz de C: \, porque esto acorta la ruta de mi carpeta.
- Ejecute npm dentro de la carpeta "n" para instalar módulos para lo que necesite.
- Inicie Cygwin y use cp para copiar la carpeta node_modules en un proyecto de destino.
- Enjuague y repita cuando cambien las dependencias o cuando necesite poner en marcha un nuevo proyecto.
Otras soluciones alternativas desagradables
Los enlaces simbólicos se pueden utilizar para acortar las rutas de los archivos, pero estos son trucos complicados. A medida que crece el ecosistema npm, las cadenas de dependencia anidadas se volverán demasiado largas y esta solución se volverá inutilizable.
Agregar TODAS las dependencias al archivo package.json de la carpeta raíz se mencionó en un hilo que encontré. Aunque este enfoque aplanará la estructura de carpetas y evitará la carga de módulos duplicados, esta solución no parece natural. También mata la usabilidad, durabilidad y productividad de npm, porque tiene que jugar con archivos y carpetas después de la instalación, ya sea manualmente o con algunos scripts hacky. El enfoque también es vulnerable al mismo destino que el enfoque de Vínculos Simbólicos puede sufrir eventualmente.