npm i / npm ci

npm i là gì ?
npm ilà alias củanpm install. Đây là lệnh phổ biến nhất dùng trong Node.js project để cài đặt tất cả các dependencies được định nghĩa trong filepackage.json.
npm i hoạt động như thế nào
npm isẽ đọc filepackage.json.- Với mỗi dependency, npm sẽ tải về version phù hợp theo rule trong
package.json(ví dụ^1.2.3,~1.2.3, hoặc exact version). - npm sẽ update hoặc tạo mới file
package-lock.json(nếu chưa tồn tại). - npm sẽ lưu dependencies trong thư mục
node_modules.
Kết quả:
- Dependencies có thể thay đổi giữa các lần cài đặt khác nhau nếu có version range (
^,~). - Phù hợp cho development, nhưng có rủi ro không tái hiện được môi trường build giống 100%.
npm ci là gì ?
npm cilà lệnh cài đặt dependencies theo kiểu “clean install”. Nó yêu cầu bắt buộc phải có filepackage-lock.jsonhoặcnpm-shrinkwrap.json.
npm ci hoạt động như thế nào
- Xóa toàn bộ thư mục
node_modules. - Cài đặt dependencies chính xác theo version được lock trong
package-lock.json. - Không thay đổi hoặc update
package-lock.json. - Nếu
package-lock.jsonvàpackage.jsonkhông sync →npm cisẽ fail ngay lập tức.
Kết quả:
- Cực kỳ nhanh hơn so với
npm ido bỏ qua step tính toán version. - Đảm bảo reproducible build (môi trường build luôn giống nhau).
- Được dùng nhiều trong CI/CD pipeline.
So sánh npm i vs npm ci
| Tiêu chí | npm i (install) | npm ci (clean install) |
|---|---|---|
| File cần thiết | package.json (tùy chọn package-lock.json) | Bắt buộc có package-lock.json |
| Quá trình cài đặt | Resolve version theo rule, có thể update lock file | Cài đặt exact version từ lock file |
| Tốc độ | Chậm hơn (cần tính toán version, update lock file) | Nhanh hơn (skip resolve, chỉ install theo lock) |
| Tái hiện môi trường build | Không đảm bảo 100% | Đảm bảo reproducible build |
| CI/CD pipeline | Ít dùng, không tối ưu | Best practice, được khuyến nghị |
Thư mục node_modules | Giữ lại nếu có, chỉ thêm/update gói mới | Luôn xóa sạch và cài mới lại |
👉 Kết luận:
Dùng npm i khi bạn đang phát triển local, cần thêm dependency mới hoặc update version.
Dùng npm ci trong CI/CD pipeline để đảm bảo build consistent, reproducible, và tốc độ cài đặt nhanh hơn.
Bạn thấy bài này thế nào?