Cách Kích Hoạt và Sử Dụng pnpm trong ServBay
pnpm là một trình quản lý gói Node.js hiện đại và hiệu quả, được thiết kế để giải quyết các vấn đề phổ biến khi quản lý phụ thuộc với các trình quản lý truyền thống như npm và yarn. Bằng cách sử dụng hệ thống file định địa chỉ theo nội dung cùng với hard link và symlink, pnpm giúp giảm đáng kể dung lượng ổ đĩa chiếm dụng và tăng tốc độ cài đặt. Đối với các nhà phát triển sử dụng ServBay để làm việc với Node.js, thành thạo với pnpm sẽ giúp việc quản lý phụ thuộc cho dự án hiệu quả hơn rất nhiều.
ServBay đóng gói Node.js kèm theo công cụ corepack — một tiện ích thử nghiệm chính thức từ Node.js giúp quản lý và chạy các phiên bản cụ thể của trình quản lý gói (npm, yarn, pnpm). Thông thường, sau khi cài đặt Node.js qua ServBay, bạn có thể kích hoạt pnpm thông qua lệnh của corepack.
Kích hoạt pnpm
Nếu bạn phát hiện lệnh pnpm chưa sử dụng được ngay, nguyên nhân thường là vì bạn chưa bật nó bằng corepack. Làm theo các bước sau để kích hoạt:
Mở ứng dụng Terminal.
Nhập lệnh sau để bật
pnpmthông quacorepack:bashcorepack enable pnpm1Nếu lệnh thực hiện thành công, thường sẽ không xuất hiện thông tin nào. Nghĩa là
corepackđã liên kết lệnhpnpmvào hệ thống.Xác nhận
pnpmđã được kích hoạt thành công và kiểm tra phiên bản:bashpnpm -v1Lệnh này sẽ hiển thị phiên bản hiện tại của
pnpm, ví dụ:bash9.1.01Nếu terminal hiển thị phiên bản, tức là
pnpmđã sẵn sàng để sử dụng.
Thông báo tải về từ corepack
Khi sử dụng lệnh pnpm, nếu bạn thấy thông báo như sau, điều này nghĩa là corepack đang tải hoặc cập nhật phiên bản pnpm theo yêu cầu. Đây là tính năng hoạt động bình thường của corepack, nhằm đảm bảo bạn sử dụng đúng phiên bản cần thiết hoặc mới nhất của pnpm cho dự án.
bash
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]1
2
3
2
3
Nhập Y và nhấn Enter để cho phép corepack tiến hành tải pnpm, sau đó lệnh sẽ tiếp tục thực thi và hiển thị phiên bản (hoặc kết quả lệnh pnpm khác bạn đã nhập).
Ưu điểm cốt lõi của pnpm & Ví dụ sử dụng
Triết lý của pnpm là quản lý phụ thuộc một cách hiệu quả. Tất cả các gói sẽ được lưu trữ trong một kho toàn cục (global store) theo cơ chế tìm theo nội dung; mỗi phiên bản của một gói chỉ được lưu một lần. Khi dự án cần dùng, pnpm sẽ tạo hard link từ kho toàn cục, và thư mục node_modules của dự án sử dụng symlink để kiến trúc lại cấu trúc phẳng—nhưng khác với hiện tượng "phantom dependency" của npm, pnpm kiểm soát nghiêm ngặt các module truy cập được: chỉ phụ thuộc trực tiếp mới có thể được tham chiếu.
Cách làm này mang lại những lợi ích nổi bật:
- Tiết kiệm dung lượng ổ đĩa: Nhiều dự án dùng chung một phiên bản phụ thuộc nên không tạo bản sao lặp.
- Tốc độ cài đặt vượt trội: Đa số file phụ thuộc đã có sẵn trong kho toàn cục nên chỉ cần tạo liên kết, nhanh hơn hẳn việc copy hoặc tải mới.
- Kiểm soát cấu trúc phụ thuộc nghiêm ngặt: Tránh hiện tượng phụ thuộc "ma", giúp quan hệ giữa các package trong dự án rõ ràng, dễ quản lý.
Dưới đây là các lệnh thường dùng với pnpm trong môi trường ServBay:
Giả sử dự án bạn nằm trong một thư mục con tại thư mục gốc web của ServBay, ví dụ /Applications/ServBay/www/my-servbay-app.
Cài đặt các phụ thuộc cho dự án
Sau khi chuyển vào thư mục dự án, dùng lệnh pnpm install để cài tất cả các phụ thuộc đã định nghĩa trong package.json:
bash
cd /Applications/ServBay/www/my-servbay-app
pnpm install1
2
2
pnpm sẽ kiểm tra kho lưu trữ toàn cục, tải về các gói còn thiếu và tạo liên kết trong thư mục node_modules của dự án.
Thêm phụ thuộc mới
Để thêm một gói phụ thuộc mới vào dự án, ví dụ như lodash:
bash
pnpm add lodash1
Nếu kho lưu trữ toàn cục chưa có, lệnh này sẽ tải về lodash, tạo liên kết, đồng thời tự động cập nhật các file package.json và pnpm-lock.yaml của dự án.
Gỡ bỏ phụ thuộc
Khi cần loại bỏ một phụ thuộc không còn sử dụng, ví dụ lodash:
bash
pnpm remove lodash1
Lệnh này sẽ xóa lodash khỏi phụ thuộc dự án, cập nhật package.json và pnpm-lock.yaml tương ứng.
Chạy các script của dự án
Bạn cũng có thể dùng pnpm để chạy các script khai báo trong trường scripts của package.json:
bash
pnpm run dev
# Hoặc viết tắt:
pnpm dev1
2
3
2
3
Thực thi lệnh trong gói bằng pnpx
Tương tự npx, pnpm cung cấp pnpx (hoặc dùng trực tiếp pnpm exec) để thực thi lệnh từ các gói đã cài trong thư mục node_modules/.bin của dự án mà không cần cài đặt toàn cục:
bash
pnpm exec webpack --version
# Hoặc viết tắt:
pnpx webpack --version1
2
3
2
3
Tổng kết
Chỉ với lệnh corepack enable pnpm, bạn có thể dễ dàng kích hoạt pnpm trong môi trường Node.js của ServBay. Tận dụng khả năng quản lý phụ thuộc hiệu quả của pnpm, bạn sẽ tăng tốc độ cài đặt, nâng cao hiệu quả phát triển và tiết kiệm đáng kể dung lượng ổ đĩa cho các dự án Node.js của mình. Nếu bạn muốn tối ưu trải nghiệm lập trình với ServBay, pnpm chắc chắn là công cụ nên dùng.
