परिस्थिति
मैं विंडोज-होस्टेड विकास परिवेशों में गल्प और संबंधित फ्रंट-एंड टूल चेन का उपयोग करना चाहता हूं। मैं ब्राउज़र-सिंक की तरह gulp प्लग-इन का उपयोग करने की कोशिश कर रहा एक दीवार को मार रहा हूं, क्योंकि फाइलों को कॉपी करने के लिए विंडोज़ फ़ाइल पथ बनाने के लिए नोड_मॉडल फ़ोल्डर ग्राफ़ प्रशंसक बाहर निकलते हैं। मैं इस समस्या से निपटने के लिए विंडोज पर अभी एक व्यावहारिक दृष्टिकोण चाहता हूं, चाहे जो भी हो, नोड समुदाय में भविष्य में विंडोज पर npm प्रयोज्यता में सुधार करने के लिए क्या हो सकता है या नहीं।
2 प्रश्न
क्या विंडोज के लिए एक एनपीएम वर्कफ़्लो है जो बस उस तरह से काम करता है जैसा यह इरादा था? "कमांड और फाइल्स इंस्टॉल करें" (जैसे OSX पर npm की तुलना, लिनक्स पर npm, रूबी रत्नों या यहां तक कि नगेट के साथ) मैं हर बार उपयोग किए जाने वाले मैनुअल फाइल एडिट्स, सिमिलिंक आदि के गुच्छा के साथ फील नहीं करना चाहता। विंडोज पर एन.पी.एम.
वहाँ एक अच्छी तरह से प्रलेखित, npm और नोड निष्पादन के लिए स्थिर Cygwin वर्कफ़्लो Windows API फ़ाइल पथ सीमाएँ हल करने के लिए है?
नीचे सूचीबद्ध Gory विवरण ...
सामान्य समस्या
- एक मानक विंडोज कमांड प्रॉम्प्ट से एनपीएम इंस्टॉल करना डीप नेस्टेड नोड_मॉड्यूल पदानुक्रमों पर विफल होता है।
- जॉयंट के गिथब रेपो थ्रेड के अनुसार, यह एक स्वीकार किया गया मुद्दा है, जो कि विंडोज-केंद्रित वातावरण में डेवलपर्स के लिए कोई तालमेल नहीं है। ( वास्तव में? )
- NT कर्नेल 32,767 वर्णों तक फ़ाइल पथ लंबाई का समर्थन करता है।
- Windows API का MAXPATH 260 वर्णों तक सीमित है।
- विंडोज एपीआई सभी प्रमुख विंडोज शेल और व्हाट्सएप के लिए फाइल ऑपरेशंस को हैंडल करता है: एक्सप्लोरर, सीएमडी, पॉवर्सशेल, माइस्जिट बैश, इत्यादि ( एमएस वास्तव में? NTFS कितने समय के आसपास है? )
- साइग्विन लंबी फ़ाइल पथों का समर्थन करता है, लेकिन npm.cmd समतल स्वरूपण के कारण आउट-ऑफ़-बॉक्स काम नहीं करता है। मैंने DOS2Unix को npm पर बदलने की कोशिश की, ताकि इसे Cygwin के साथ काम किया जा सके, लेकिन इसके साथ अन्य मुद्दे भी प्रतीत होते हैं।
मेरी करंट हैक
- C: \ की जड़ पर एक स्टेजिंग क्षेत्र के रूप में एक "n" फ़ोल्डर बनाएं, क्योंकि यह मेरे फ़ोल्डर पथ को छोटा करता है।
- जो कुछ भी मुझे चाहिए उसके लिए मॉड्यूल स्थापित करने के लिए "n" फ़ोल्डर के अंदर npm चलाएं।
- Cygwin को आग दें और नोड_modules फ़ोल्डर को एक गंतव्य प्रोजेक्ट में कॉपी करने के लिए cp का उपयोग करें।
- निर्भरता बदलने या जब मुझे एक नई परियोजना को स्पिन करने की आवश्यकता होती है तो कुल्ला और दोहराएं।
अन्य Unpalatable Workarounds
प्रतीकात्मक लिंक का उपयोग फ़ाइल पथ को छोटा करने के लिए किया जा सकता है, लेकिन ये कुडी हैक्स हैं। जैसे ही npm पारिस्थितिकी तंत्र बढ़ता है, नेस्टेड निर्भरता श्रृंखला बहुत लंबी हो जाएगी और यह वर्कअराउंड अनुपयोगी हो जाएगा।
रूट फ़ोल्डर के Package.json फ़ाइल में सभी आश्रितों को जोड़ने से मेरे द्वारा आए एक धागे का उल्लेख किया गया था। यद्यपि यह दृष्टिकोण फ़ोल्डर संरचना को समतल कर देगा और डुप्लिकेट मॉड्यूल को लोड करने से रोकेगा, यह समाधान अप्राकृतिक लगता है। यह npm की प्रयोज्यता, स्थायित्व और उत्पादकता को भी मारता है, क्योंकि आपको फ़ाइलों और फ़ोल्डरों के साथ फिडेल करना पड़ता है या तो मैन्युअल रूप से या कुछ हैक किए गए स्क्रिप्ट के साथ। दृष्टिकोण भी उसी भाग्य के प्रति संवेदनशील है जो प्रतीकात्मक लिंक दृष्टिकोण अंततः पीड़ित हो सकता है।