Durum
Windows tarafından barındırılan geliştirme ortamlarında gulp ve ilgili ön uç araç zincirlerini kullanmak istiyorum. Browser-Sync gibi gulp eklentilerini kullanmaya çalışan bir duvara çarpıyorum, çünkü node_modules klasör grafiği, Windows dosya yollarını dosyaları kopyalamak için çok uzun hale getiriyor. Node topluluğunun gelecekte Windows'ta npm kullanılabilirliğini iyileştirmek için ne sağlayıp sağlayamayacağına bakılmaksızın, şu anda Windows'ta bu sorunu çözmek için pragmatik bir yaklaşım istiyorum.
2 Soru
Windows için tam olarak tasarlandığı şekilde çalışan bir npm iş akışı var mı? "komutu çalıştır ve dosyaları yükle" (ör. OSX'te npm, Linux'ta npm, ruby gems ve hatta nuget ile karşılaştırılabilir) Her kullandığımda bir sürü manuel dosya düzenlemesi, sembolik bağ vb. ile uğraşmak istemiyorum Windows'ta npm.
Windows API dosya yolu sınırlarını geçici olarak çözmek için npm ve düğüm yürütme için iyi belgelenmiş, kararlı bir Cygwin iş akışı var mı?
Aşağıda listelenen kanlı detaylar ...
Genel Problem
- Standart bir Windows komut isteminden npm yüklemesini çalıştırmak, derinlemesine iç içe geçmiş düğüm_ modülleri hiyerarşilerinde başarısız olur.
- Joyent'in github repo iş parçacığına göre, bu, Windows merkezli ortamlardaki geliştiriciler için makul bir geçici çözüm içermeyen kabul edilmiş bir sorundur . ( Gerçekten mi? )
- NT Kernel, 32.767 karaktere kadar dosya yolu uzunluklarını destekler.
- Windows API'nin MAXPATH'i 260 karakterle sınırlıdır.
- Windows API, tüm büyük Windows kabukları için dosya işlemlerini yürütür ve aşağıdakiler dahil değildir: Explorer, CMD, Powershell, MYSgit bash, vb. ( MS gerçekten? NTFS ne zamandır var? )
- Cygwin uzun dosya yollarını destekler, ancak npm.cmd, crlf biçimlendirmesi nedeniyle kullanıma hazır olarak çalışmaz. Cygwin ile çalışmasını sağlamak için DOS2Unix dönüşümünü npm'de denedim, ancak bununla ilgili başka sorunlar var gibi görünüyor.
Mevcut Hack'im
- Klasör yolumu kısalttığından, C: \ kökünde hazırlama alanı olarak bir "n" klasörü oluşturun.
- İhtiyacım olan şey için modülleri yüklemek için "n" klasörünün içinde npm'yi çalıştırın.
- Cygwin'i çalıştırın ve node_modules klasörünü bir hedef projeye kopyalamak için cp'yi kullanın.
- Bağımlılıklar değiştiğinde veya yeni bir proje başlatmam gerektiğinde durulayın ve tekrarlayın.
Diğer Tatsız Çözümler
Dosya yollarını kısaltmak için Sembolik Bağlantılar kullanılabilir, ancak bunlar kludgy korsanlarıdır. Npm ekosistemi büyüdükçe, iç içe geçmiş bağımlılık zincirleri çok uzar ve bu geçici çözüm kullanılamaz hale gelir.
TÜM bağımlılıkları kök klasörün package.json dosyasına eklemek , karşılaştığım bir iş parçacığında bahsedildi. Bu yaklaşım klasör yapısını düzleştirecek ve yinelenen modüllerin yüklenmesini engelleyecek olsa da, bu geçici çözüm doğal görünmüyor. Aynı zamanda npm'nin kullanılabilirliğini, dayanıklılığını ve üretkenliğini de öldürür, çünkü yükleme sonrası dosyalar ve klasörlerle ya elle ya da bazı hacky komut dosyalarıyla uğraşmanız gerekir. Yaklaşım aynı zamanda Sembolik Bağlantılar yaklaşımının sonunda zarar görebileceği aynı kadere karşı savunmasızdır.