Situation
Je souhaite utiliser gulp et les chaînes d'outils frontales associées dans les environnements de développement hébergés par Windows. Je frappe un mur en essayant d'utiliser des plug-ins gulp comme Browser-Sync, car le graphique du dossier node_modules se déploie, ce qui rend les chemins de fichiers Windows trop longs pour copier les fichiers. J'aimerais une approche pragmatique pour gérer ce problème dès maintenant sur Windows, indépendamment de ce que la communauté Node peut ou non fournir pour améliorer la convivialité de npm sur Windows à l'avenir.
2 questions
Existe-t-il un flux de travail npm pour Windows qui fonctionne exactement comme prévu? "exécuter la commande et installer les fichiers" (par exemple, comparable à npm sur OSX, npm sur Linux, ruby gems ou même nuget) Je ne veux pas jouer avec un tas de modifications manuelles de fichiers, de liens symboliques, etc. à chaque fois que j'utilise npm sous Windows.
Existe-t-il un flux de travail Cygwin stable et bien documenté pour l'exécution de npm et de nœuds afin de contourner les limites de chemin de fichier de l'API Windows?
Détails Gory énumérés ci-dessous ...
Problème général
- L'exécution de l'installation de npm à partir d'une invite de commande Windows standard échoue sur les hiérarchies node_modules profondément imbriquées.
- Selon le fil de repo github de Joyent, il s'agit d'un problème reconnu sans solution de contournement acceptable pour les développeurs dans des environnements Windows. ( Vraiment? )
- NT Kernel prend en charge des longueurs de chemin de fichier jusqu'à 32 767 caractères.
- MAXPATH de l'API Windows est limité à 260 caractères.
- L'API Windows gère les opérations de fichiers pour tous les principaux shells Windows et autres, y compris: Explorer, CMD, Powershell, MYSgit bash, etc. ( MS vraiment? Depuis combien de temps NTFS existe-t-il? )
- Cygwin prend en charge les chemins de fichiers longs, mais npm.cmd ne fonctionne pas directement en raison du formatage crlf. J'ai essayé la transformation DOS2Unix sur npm pour qu'elle fonctionne avec Cygwin, mais il semble y avoir d'autres problèmes avec cela.
Mon hack actuel
- Créez un dossier "n" en tant que zone intermédiaire à la racine de C: \, car cela raccourcit le chemin de mon dossier.
- Exécutez npm dans le dossier "n" pour installer des modules pour tout ce dont j'ai besoin.
- Lancez Cygwin et utilisez cp pour copier le dossier node_modules dans un projet de destination.
- Rincez et répétez lorsque les dépendances changent ou lorsque j'ai besoin de lancer un nouveau projet.
Autres solutions de contournement désagréables
Les liens symboliques peuvent être utilisés pour raccourcir les chemins de fichiers, mais ce sont des hacks kludgy. À mesure que l'écosystème npm se développe, les chaînes de dépendances imbriquées deviendront trop longues et cette solution de contournement deviendra inutilisable.
L'ajout de TOUTES les dépendances au fichier package.json du dossier racine a été mentionné dans un fil de discussion que j'ai rencontré. Bien que cette approche aplatisse la structure des dossiers et empêche le chargement de modules en double, cette solution de contournement ne semble pas naturelle. Cela tue également la convivialité, la durabilité et la productivité de npm, car vous devez manipuler les fichiers et les dossiers après l'installation manuellement ou avec des scripts piratés. L'approche est également vulnérable au même sort que l'approche des liens symboliques peut éventuellement subir.