สถานการณ์
ฉันต้องการใช้อึกและห่วงโซ่เครื่องมือส่วนหน้าที่เกี่ยวข้องในสภาพแวดล้อมการพัฒนาที่โฮสต์บน Windows ฉันกำลังชนกำแพงพยายามใช้ปลั๊กอินอึกเช่น Browser-Sync เนื่องจากโฟลเดอร์ node_modules แฟน ๆ ทำให้เส้นทางไฟล์ windows ยาวเกินไปที่จะคัดลอกไฟล์ ฉันต้องการแนวทางปฏิบัติในการจัดการปัญหานี้ใน Windows ตอนนี้โดยไม่คำนึงถึงสิ่งที่ชุมชน Node อาจมีหรือไม่มีเพื่อปรับปรุงการใช้งาน npm บน Windows ในอนาคต
2 คำถาม
มีเวิร์กโฟลว์ npm สำหรับ Windows ที่ทำงานตามที่ตั้งใจไว้หรือไม่ "เรียกใช้คำสั่งและไฟล์ติดตั้ง" (เช่นเทียบได้กับ npm บน OSX, npm บน Linux, ทับทิมหรือแม้แต่ nuget) ฉันไม่ต้องการเล่นกับการแก้ไขไฟล์ด้วยตนเองจำนวนมาก symlinks ฯลฯ ทุกครั้งที่ฉันใช้ npm บน Windows
มีเวิร์กโฟลว์ Cygwin ที่ได้รับการจัดทำเป็นเอกสารอย่างดีและมีเสถียรภาพสำหรับการเรียกใช้งาน npm และโหนดเพื่อแก้ปัญหาขีด จำกัด เส้นทางไฟล์ Windows API
รายละเอียด Gory ตามรายการด้านล่าง ...
ปัญหาทั่วไป
- การรันการติดตั้ง npm จากพรอมต์คำสั่งมาตรฐานของ Windows ล้มเหลวในลำดับชั้น node_modules ที่ซ้อนกันอย่างลึกซึ้ง
- ตามเธรด repo github ของ Joyent นี่เป็นปัญหาที่ได้รับการยอมรับโดยไม่มีวิธีแก้ปัญหาที่น่าพอใจสำหรับนักพัฒนาในสภาพแวดล้อมที่ใช้ Windows เป็นศูนย์กลาง ( จริงเหรอ? )
- NT Kernel รองรับพา ธ ไฟล์ที่มีความยาวสูงสุด 32,767 ตัวอักษร
- MAXPATH ของ Windows API จำกัด ไว้ที่ 260 อักขระ
- Windows API จัดการการทำงานของไฟล์สำหรับเชลล์ Windows ที่สำคัญทั้งหมดและสิ่งที่ไม่รวมถึง: Explorer, CMD, Powershell, MYSgit bash และอื่น ๆ ( MS จริงๆแล้ว NTFS อยู่มานานแค่ไหน? )
- Cygwin รองรับเส้นทางไฟล์ที่ยาว แต่ npm.cmd ไม่สามารถใช้งานได้ทันทีเนื่องจากการจัดรูปแบบ crlf ฉันลองแปลง DOS2Unix บน npm เพื่อให้มันทำงานกับ Cygwin แต่ดูเหมือนจะมีปัญหาอื่น ๆ ในเรื่องนี้
การแฮ็กปัจจุบันของฉัน
- สร้างโฟลเดอร์ "n" เป็นพื้นที่จัดเตรียมบนรูทของ C: \ เนื่องจากจะทำให้เส้นทางโฟลเดอร์ของฉันสั้นลง
- เรียกใช้ npm ภายในโฟลเดอร์ "n" เพื่อติดตั้งโมดูลสำหรับสิ่งที่ฉันต้องการ
- เปิด Cygwin และใช้ cp เพื่อคัดลอกโฟลเดอร์ node_modules ไปยังโปรเจ็กต์ปลายทาง
- ล้างและทำซ้ำเมื่อการอ้างอิงเปลี่ยนไปหรือเมื่อฉันต้องการหมุนโปรเจ็กต์ใหม่
วิธีแก้ปัญหาอื่น ๆ ที่ไม่อร่อย
Symbolic Linksสามารถใช้เพื่อทำให้เส้นทางไฟล์สั้นลง แต่สิ่งเหล่านี้เป็นการแฮ็ก kludgy เมื่อระบบนิเวศของ npm เติบโตขึ้นห่วงโซ่การพึ่งพาที่ซ้อนกันจะยาวเกินไปและวิธีแก้ปัญหานี้จะใช้ไม่ได้
การเพิ่มการพึ่งพาทั้งหมดลงในไฟล์package.json ของโฟลเดอร์รูทถูกกล่าวถึงในเธรดเดียวที่ฉันเจอ แม้ว่าวิธีนี้จะทำให้โครงสร้างโฟลเดอร์แบนราบและป้องกันการโหลดโมดูลที่ซ้ำกัน แต่วิธีแก้ปัญหานี้ให้ความรู้สึกไม่เป็นธรรมชาติ นอกจากนี้ยังฆ่าความสามารถในการใช้งานความทนทานและประสิทธิภาพการทำงานของ npm เนื่องจากคุณต้องใช้ไฟล์และโฟลเดอร์หลังการติดตั้งด้วยตนเองหรือด้วยสคริปต์แฮ็ก แนวทางนี้ยังเสี่ยงต่อชะตากรรมเดียวกันกับที่ Symbolic Links เข้าใกล้ในที่สุด