Tình hình
Tôi muốn sử dụng gulp và chuỗi công cụ front-end liên quan trong môi trường phát triển được lưu trữ trên Windows. Tôi đang cố gắng sử dụng các plug-in gulp như Browser-Sync, vì biểu đồ thư mục node_modules khiến đường dẫn tệp windows quá dài để sao chép tệp. Tôi muốn một cách tiếp cận thực tế để xử lý vấn đề này ngay bây giờ trên Windows, bất kể cộng đồng Node có thể cung cấp hoặc không cung cấp những gì để cải thiện khả năng sử dụng npm trên Windows trong tương lai.
2 câu hỏi
Có quy trình làm việc npm cho Windows hoạt động theo cách mà nó đã dự kiến không? "chạy lệnh và cài đặt tệp" (ví dụ: có thể so sánh với npm trên OSX, npm trên Linux, ruby gems hoặc thậm chí là nuget) Tôi không muốn loay hoay với hàng loạt chỉnh sửa tệp thủ công, liên kết tượng trưng, v.v. mỗi lần sử dụng npm trên Windows.
Có quy trình làm việc Cygwin ổn định, được ghi chép đầy đủ cho việc thực thi npm và nút để giải quyết các giới hạn đường dẫn tệp Windows API không?
Chi tiết về Gory được liệt kê bên dưới ...
Vấn đề chung
- Chạy cài đặt npm từ dấu nhắc lệnh chuẩn của Windows không thành công trên hệ thống phân cấp node_modules lồng nhau sâu.
- Theo luồng repo github của Joyent, đây là một vấn đề được thừa nhận không có cách giải quyết hợp lý nào cho các nhà phát triển trong môi trường lấy Windows làm trung tâm. ( Thật không? )
- NT Kernel hỗ trợ độ dài đường dẫn tệp lên đến 32.767 ký tự.
- MAXPATH của Windows API được giới hạn ở 260 ký tự.
- API Windows xử lý các hoạt động tệp cho tất cả các shell chính của Windows và không bao gồm: Explorer, CMD, Powershell, MYSgit bash, v.v. ( MS thực sự? NTFS đã tồn tại được bao lâu? )
- Cygwin hỗ trợ các đường dẫn tệp dài, nhưng npm.cmd không hoạt động hiệu quả do định dạng crlf. Tôi đã thử biến đổi DOS2Unix trên npm để làm cho nó hoạt động với Cygwin, nhưng dường như có vấn đề khác với điều này.
Hack hiện tại của tôi
- Tạo một thư mục "n" làm vùng dàn dựng trên thư mục gốc của C: \, vì điều này sẽ rút ngắn đường dẫn thư mục của tôi.
- Chạy npm bên trong thư mục "n" để cài đặt các mô-đun cho bất kỳ thứ gì tôi cần.
- Kích hoạt Cygwin và sử dụng cp để sao chép thư mục node_modules vào một dự án đích.
- Rửa sạch và lặp lại khi các phụ thuộc thay đổi hoặc khi tôi cần tạo một dự án mới.
Các cách giải quyết không thể lặp lại khác
Các liên kết tượng trưng có thể được sử dụng để rút ngắn đường dẫn tệp, nhưng đây là những cách tấn công khó hiểu. Khi hệ sinh thái npm phát triển, các chuỗi phụ thuộc lồng nhau sẽ trở nên quá dài và cách giải quyết này không thể sử dụng được.
Thêm TẤT CẢ các phụ thuộc vào tệp package.json của thư mục gốc đã được đề cập trong một chủ đề mà tôi đã xem qua. Mặc dù cách tiếp cận này sẽ làm phẳng cấu trúc thư mục và ngăn tải các mô-đun trùng lặp, nhưng cách giải quyết này có vẻ không tự nhiên. Nó cũng giết chết khả năng sử dụng, độ bền và năng suất của npm, vì bạn phải loay hoay với các tệp và thư mục sau khi cài đặt theo cách thủ công hoặc với một số tập lệnh hack. Cách tiếp cận cũng dễ bị chung số phận mà cách tiếp cận Liên kết tượng trưng cuối cùng có thể phải gánh chịu.