Bản cập nhật mới nhất của Bun mang đến một tính năng đột phá hứa hẹn sẽ cách mạng hóa cách thức cài đặt các package JavaScript, đặc biệt là đối với người dùng Windows. Trình liên kết node cô lập mới, lấy cảm hứng từ cách tiếp cận của pnpm, sẽ được tích hợp trong Bun v1.2.19 và giải quyết các vấn đề tồn tại lâu nay với quản lý dependency đồng thời mang lại những cải thiện hiệu suất ấn tượng.
Tăng Hiệu Suất Đáng Kể Trên Windows
Chế độ cài đặt cô lập mang lại những cải thiện tốc độ đáng chú ý, đặc biệt trên hệ thống Windows nơi người dùng có thể kỳ vọng việc cài đặt package nhanh hơn từ 10x đến 20x. Trong khi người dùng macOS và Linux sẽ thấy những cải thiện khiêm tốn hơn, tác động hiệu suất vẫn tích cực trên tất cả các nền tảng. Cải thiện đáng kể này khiến Bun trở thành một lựa chọn hấp dẫn hơn nữa cho các nhà phát triển làm việc trong môi trường đa nền tảng.
Cải thiện hiệu suất:
- Windows: Cài đặt nhanh hơn từ 10 đến 20 lần
- macOS/Linux: Tác động tích cực nhỏ hoặc trung tính đến hiệu suất
Tăng Cường Độ Tin Cậy Cho Monorepos
Ngoài tốc độ, trình liên kết cô lập còn giải quyết các vấn đề độ tin cậy quan trọng đã gây khó khăn cho việc quản lý package JavaScript. Bằng cách ngăn chặn phantom dependencies và dangling symlinks, tính năng này làm cho việc cài đặt Bun đáng tin cậy hơn nhiều trong môi trường monorepo. Hệ thống đảm bảo rằng các dependency chỉ có thể truy cập các phiên bản của các package khác mà chúng chỉ định rõ ràng trong file package.json của riêng mình, loại bỏ các lỗi runtime bí ẩn gây ra bởi việc phân giải dependency ngầm định.
Phantom dependencies: các package hoạt động trong quá trình phát triển nhưng không được khai báo rõ ràng là dependenciesDangling symlinks: các liên kết tượng trưng bị hỏng trỏ đến các file hoặc thư mục không tồn tại
Cấu trúc thư mục:
node_modules/
├── .modules.yaml
├── [email protected]/
│ └── node_modules/
│ └── [email protected]
└── my-dependency -> .modules/[email protected]/
Sức Hút Ngày Càng Tăng Trong Hệ Sinh Thái
Phản hồi từ cộng đồng cho thấy vai trò mở rộng của Bun vượt ra ngoài việc quản lý package. Các nhà phát triển ngày càng áp dụng Bun cho shell scripting, các hoạt động cơ sở dữ liệu và utility scripts, ca ngợi các tính năng tích hợp sẵn như hỗ trợ SQLite và chức năng S3 client. Tính linh hoạt này định vị Bun như một JavaScript runtime toàn diện thay vì chỉ là một package manager khác.
Bun đang dần trở thành giải pháp tất-cả-trong-một cho hệ sinh thái js
Trình liên kết cô lập đại diện cho một bước tiến khác hướng tới cách tiếp cận thống nhất này, cung cấp cho các nhà phát triển một giải pháp thay thế đáng tin cậy và nhanh hơn cho việc cài đặt npm truyền thống trong khi vẫn duy trì khả năng tương thích với các quy trình làm việc hiện có.
Các tính năng được hỗ trợ:
- Cài đặt dependency đơn cơ bản
- Các package có phạm vi ( @types/* )
- Transitive dependencies
- Cyclic dependencies
- Folder dependencies
- Hỗ trợ workspace
- Xác minh cấu trúc symlink
Hạn Chế Hiện Tại Và Triển Vọng Tương Lai
Mặc dù tính năng đã sẵn sàng để thử nghiệm thông qua kênh phát hành canary, một lỗi đặc thù của Windows hiện đang ngăn cản nhóm Bun sử dụng cài đặt cô lập trong repository của chính họ. Vấn đề này cần được giải quyết trước khi phát hành ổn định, mặc dù những người dùng sớm có thể thử nghiệm tính năng này bằng cách sử dụng bun install --linker=isolated
hoặc bằng cách cấu hình nó trong file bunfig.toml của họ.
Việc triển khai hỗ trợ tất cả các tình huống quản lý package chính bao gồm scoped packages, peer dependencies, workspaces, và thậm chí cả các chu trình dependency phức tạp, khiến nó trở thành một giải pháp mạnh mẽ cho môi trường phát triển thực tế.
Tham khảo: implement nodeLinker: isolated in bun install #20440