Kích thước thư mục node_modules không phải là vấn đề. Đó là một đặc ân

Suy nghĩ của tôi về cuộc tranh luận về kích thước thư mục node_modules

Tôi đã từng phát điên vớinode_moduleskích thước thư mục. Làm thế nào một ứng dụng JavaScript có thể có kích thước 100, 200MB mà không cần tôi thêm bất kỳ dòng mã nào? Tôi chỉ chạynpx create-react-app todolistvà tôi đã tải xuống 218,7MB trong sốđồ đạc! (Tôi mới kiểm tra nó bây giờ, đó là một con số thực).

Bất cứ khi nào bạn nghĩ về kích thước của node_modules, hãy nghĩ về hàng triệu giờ công mà các lập trình viên chúng tôi đã bỏ vào nó.

Đây là tất cả phần mềm mã nguồn mở. Phần mềm bạn có thể kiểm tra và học hỏi. Được các lập trình viên và các công ty trên toàn thế giới ủng hộ. Đó là một nỗ lực toàn cầu mà ai đó đã thực hiện rất đơn giản để hưởng lợi. Nó tình cờnpm, công cụ đầu tiên và công ty tiếp theo.

Tất cả chúng tôi đều đồng ý xuất bản mã của chúng tôi lên máy chủ của họ và mọi người xây dựng mọi thứ ở trên cùng, những thứ khác ở trên cùng, cho đến khi chúng tôi đạt được điểm khởi động nhanh (như create-react-app hoặc Vue CLI chẳng hạn) mà chúng tôi có thể sử dụng để nhận được nhiều quyền lực vào tay chúng tôi miễn phí.

200MB có quá nhiều trong thời đại lưu trữ nhanh theo thứ tự TB không?

Hãy nhớ rằng phần lớn kích thước này là các bài kiểm tra, tài liệu và những gì không. Và phần lớn mã còn lại chỉ được sử dụng trong môi trường phát triển. Nó không giống như bạn sẽ cung cấp một ứng dụng 200MB cho khách hàng, tôi nghĩ điều này đã được hiểu rõ.

Tôi đã lấy ví dụ về ứng dụng tạo-phản ứng. Có gì trong 200MB đó?

Để bắt đầu, hãy tạo-phản ứng-ứng dụng chứa

  • một trình biên dịch (Babel)
  • một gói (Webpack)
  • một trình thu nhỏ mã
  • một linter (ESLint)
  • một công cụ đường ống tạo kiểu (SCSS)
  • một máy chủ phát triển với tính năng tải lại trực tiếp
  • một người chạy thử nghiệm (Jest)

Nếu bạn muốn viết một ứng dụng Mac hoặc iPhone, bạn phải cài đặtXcode, IDE do Apple cung cấp.Xcodelà (chờ nó ..) có kích thước gần 14GB. Đó là kích thước gấp 70 lần của node_modules. Được cho là, chúng tôi đang so sánh hai thứ khác nhau, nhưng node_modules chứa tất cả những gì bạn cần để bắt đầu làm việc trên mã của mình. Bạn có thể ghép nối nó với VS Code có kích thước 200MB hoặc với Sublime Text có dung lượng 30MB - không thành vấn đề, thậm chí không ai được yêu cầu nghiêm ngặt (trong khi bạn không thể tạo ứng dụng iOS / macOS mà không cóXcode).

Nếu mối quan tâm là đĩa cứng của bạn đầy các mô-đun,pnpmlà một giải pháp thả vào tối ưu giúp tập trung các mô-đun vào một vị trí và tất cả các ứng dụng của bạn sử dụng các mô-đun đó thay vì tạo phiên bản cục bộ của riêng chúng. Nó được sử dụng bởi các công cụ mã hóa trực tuyến nhưTrục trặcví dụ.

Tôi đã đọc mọi người tự hỏi làm thế nào họ có thể kiểm tra cơ sở mã cho các vấn đề bảo mật hoặc các vấn đề khác nếu ứng dụng của chúng tôi dựa vào quá nhiều mã do người khác viết.

Đó là một sự lựa chọn, phải không? Bạn không bị buộc phải sử dụng các mô-đun. Bạn có thể tạo phiên bản công cụ của riêng mình mà không yêu cầu tất cả các mô-đun đó, nhưng sau đó bạn sẽ phải duy trì mã đó, kiểm tra nó, quản lý các bản phát hành mới khi mọi thứ cần được cập nhật và hơn thế nữacông việc.

Tôi đã có cơ hội làm việc với các ngôn ngữ và hệ sinh thái khác, nơi mà sự sống động và cơ hội của npm sẽ là một điều may mắn và thay vào đó tôi phải xây dựng thư viện nhỏ của riêng mình cho mọi thứ, vì những thứ tôi tìm thấy được phân phối bởi các nhà phát triển phần 3 hoặc không tồn tại hoặc bị bỏ rơi từ một vài năm và không được cập nhật với phần còn lại của ngôn ngữ.

Có lẽ chúng ta có thể có một lá cờ để chỉ tải xuống mã sản xuất thay vì tất cả tài liệu, thử nghiệm và những gì không? Nhưng đây chỉ là một ý tưởng nảy ra trong đầu bây giờ, không chắc điều này có thể thực hiện được như thế nào.

Dù sao thì: muôn năm,node_modules!

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: