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
pnpm
thông quacorepack
:bashcorepack enable pnpm
1Nế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ệnhpnpm
và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 -v
1Lệnh này sẽ hiển thị phiên bản hiện tại của
pnpm
, ví dụ:bash9.1.0
1Nế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.
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]
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
:
cd /Applications/ServBay/www/my-servbay-app
pnpm install
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
:
pnpm add lodash
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
:
pnpm remove lodash
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
:
pnpm run dev
# Hoặc viết tắt:
pnpm dev
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:
pnpm exec webpack --version
# Hoặc viết tắt:
pnpx webpack --version
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.