- Ủy ban Chỉ đạo Kỹ thuật (TSC) của Node.js đã chính thức bỏ phiếu quyết định sẽ không còn đóng gói và phân phối Corepack cùng Node.js nữa
- Áp dụng từ Node.js 25, còn Node.js 24 trở xuống sẽ tiếp tục được cung cấp như một tính năng thử nghiệm
Vai trò và giới hạn của Corepack
- Corepack là một công cụ thử nghiệm được giới thiệu trong Node.js 16.9.0, cho phép sử dụng các trình quản lý gói như Yarn, pnpm mà không cần cài đặt riêng
- Công cụ này giúp dự án có thể ép buộc sử dụng một phiên bản trình quản lý gói cụ thể
- Tuy nhiên, do người dùng ít nhận biết và hiểu nhầm về mục đích của nó nên Corepack không được sử dụng rộng rãi
- Cũng tồn tại sự hoài nghi về việc đưa các trình quản lý gói, vốn nên hoạt động độc lập với runtime, vào trong Node.js
Quá trình dẫn đến việc loại bỏ Corepack
- Các cuộc thảo luận về tương lai của Corepack đã kéo dài trong nhiều năm, và đến tháng 11/2023, đề xuất bật mặc định đã gây tranh cãi
- Tháng 2/2024 xuất hiện lo ngại rằng Corepack có thể được dùng như một cách để tháo gỡ sự gắn kết giữa npm và Node.js
- Tháng 3/2024, trong khi làm rõ rằng npm vẫn sẽ tiếp tục được đóng gói cùng Node.js, khả năng loại bỏ Corepack cũng được đưa ra
- TSC đã ủy quyền quyết định liên quan cho Nhóm công tác bảo trì gói (PMWG)
- PMWG đã đưa ra lộ trình loại bỏ như sau:
- Nhấn mạnh các công cụ quản lý phiên bản như nvm, fnm trên trang tải xuống Node.js
- Tách tài liệu Corepack khỏi tài liệu API của Node.js và chuyển sang một kho lưu trữ riêng
- Loại bỏ Corepack khỏi bản phân phối Node.js kể từ bản phát hành major tiếp theo
- Lộ trình này nhận được sự ủng hộ mạnh mẽ trong PMWG và dẫn tới cuộc bỏ phiếu cuối cùng
Lý do của quyết định loại bỏ Corepack
- Tỷ lệ chấp nhận thấp: nhiều nhà phát triển thay vì dùng Corepack thì tự cài trực tiếp trình quản lý gói mà họ ưa thích
- Lo ngại về phân phối: có ý kiến cho rằng việc đưa Corepack vào chính binary của Node.js là không cần thiết
- Vấn đề bảo trì dài hạn: nếu Corepack tách khỏi Node.js, các trình quản lý gói có thể phát triển độc lập hơn
- Kết quả bỏ phiếu là đề xuất “loại bỏ theo từng giai đoạn trong tương lai” đã được thông qua
- Các đề xuất khác (ví dụ: giữ ở trạng thái tắt mặc định) không nhận đủ ủng hộ
- Một số nhà phát triển đánh giá quyết định này là bước lùi vì họ đã dùng Corepack thay cho npm để tận dụng pnpm
- Phía Node.js nhấn mạnh rằng Corepack ngay từ đầu vốn không phải là một tính năng vĩnh viễn và việc duy trì tách biệt là điều phù hợp
Những thay đổi sắp tới
- Trong tương lai, Node.js sẽ không còn bao gồm Corepack theo mặc định
- Khi cần, người dùng sẽ phải cài đặt thủ công bằng lệnh sau:
- Các dự án đang sử dụng Corepack sẽ cần cập nhật tài liệu và quy trình làm việc
- Tuy nhiên, quyết định lần này không có nghĩa là Corepack bị ngừng hỗ trợ, mà chỉ là bị gỡ khỏi Node.js
- Việc bảo trì Corepack sẽ tiếp tục cho đến trước khi Node.js 24.x đạt EOL
Bối cảnh lịch sử giữa Node.js và trình quản lý gói
- Trước đây cũng từng có tranh cãi về những thành phần nên được đưa vào Node.js, và việc có bao gồm npm hay không cũng là một trong số đó
- Sự xuất hiện của các trình quản lý gói thay thế như Yarn, pnpm đã tạo ra nhiều lựa chọn hơn
- Việc loại bỏ Corepack là một phần trong nỗ lực làm cho bản phân phối Node.js gọn nhẹ hơn
- Điều này cũng phù hợp với xu hướng ở các hệ sinh thái ngôn ngữ khác là tách runtime khỏi trình quản lý gói
- Các nhà phát triển cần chuẩn bị môi trường phát triển của mình với việc Corepack sẽ không còn được bao gồm trong Node.js về sau
Chưa có bình luận nào.