Situasi
Saya ingin menggunakan gulp dan rantai alat front-end terkait di lingkungan pengembangan yang dihosting Windows. Saya menabrak dinding mencoba menggunakan plug-in gulp seperti Browser-Sync, karena grafik folder node_modules menyebar membuat jalur file windows terlalu panjang untuk menyalin file. Saya ingin pendekatan pragmatis untuk menangani masalah ini sekarang di Windows, terlepas dari apa yang mungkin atau mungkin tidak disediakan oleh komunitas Node untuk meningkatkan kegunaan npm di Windows di masa mendatang.
2 Pertanyaan
Apakah ada alur kerja npm untuk Windows yang berfungsi sebagaimana mestinya? "jalankan perintah dan file instal" (misalnya sebanding dengan npm di OSX, npm di Linux, ruby gems atau bahkan nuget) Saya tidak ingin mengutak-atik banyak pengeditan file manual, symlink, dll. setiap kali saya menggunakan npm di Windows.
Apakah ada alur kerja Cygwin yang terdokumentasi dengan baik dan stabil untuk eksekusi npm dan node untuk mengatasi batas jalur file Windows API?
Detail berdarah tercantum di bawah ...
Masalah Umum
- Menjalankan npm install dari prompt perintah Windows standar gagal pada hierarki node_modules yang sangat bertingkat.
- Menurut utas repo github Joyent, ini adalah masalah yang diakui tanpa solusi yang sesuai untuk pengembang di lingkungan yang berpusat pada Windows. ( Benarkah? )
- Kernel NT mendukung panjang jalur file hingga 32.767 karakter.
- MAXPATH Windows API dibatasi hingga 260 karakter.
- Windows API menangani operasi file untuk semua shell Windows utama dan yang lainnya termasuk: Explorer, CMD, Powershell, MYSgit bash, dll. ( MS benarkah? Berapa lama NTFS sudah ada? )
- Cygwin mendukung jalur file yang panjang, tetapi npm.cmd tidak berfungsi di luar kotak karena pemformatan crlf. Saya mencoba transformasi DOS2Unix pada npm untuk membuatnya berfungsi dengan Cygwin, tetapi tampaknya ada masalah lain dengan ini.
Peretasan Saya Saat Ini
- Buat folder "n" sebagai area pementasan di root C: \, karena ini mempersingkat jalur folder saya.
- Jalankan npm di dalam folder "n" untuk menginstal modul apa pun yang saya butuhkan.
- Jalankan Cygwin dan gunakan cp untuk menyalin folder node_modules ke dalam proyek tujuan.
- Bilas dan ulangi saat dependensi berubah atau ketika saya perlu memutar proyek baru.
Solusi Tidak Menyenangkan Lainnya
Symbolic Links dapat digunakan untuk mempersingkat jalur file, tetapi ini adalah hacks kludgy. Saat ekosistem npm tumbuh, rantai ketergantungan bersarang akan menjadi terlalu panjang dan solusi ini menjadi tidak dapat digunakan.
Menambahkan SEMUA ketergantungan ke file package.json folder root disebutkan dalam satu utas yang saya temukan. Meskipun pendekatan ini akan meratakan struktur folder dan mencegah pemuatan modul duplikat, pemecahan masalah ini terasa tidak wajar. Ini juga membunuh kegunaan, daya tahan, dan produktivitas npm, karena Anda harus mengutak-atik file dan folder pasca-instal baik secara manual atau dengan beberapa skrip hacky. Pendekatan ini juga rentan terhadap nasib yang sama yang mungkin dialami oleh pendekatan Symbolic Links.