npm i / npm ci

2 phút đọcĐiểm đánh giá trung bình 5,0 (1 đánh giá)2 lượt xem

npm i là gì ?

  • npm i là alias của npm 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 file package.json.

npm i hoạt động như thế nào

  • npm i sẽ đọc file package.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 ci là lệnh cài đặt dependencies theo kiểu “clean install”. Nó yêu cầu bắt buộc phải có file package-lock.json hoặc npm-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.json và package.json không sync → npm ci sẽ fail ngay lập tức.

Kết quả:

  • Cực kỳ nhanh hơn so với npm i do 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ếtpackage.json (tùy chọn package-lock.json)Bắt buộc có package-lock.json
Quá trình cài đặtResolve version theo rule, có thể update lock fileCà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 buildKhông đảm bảo 100%Đảm bảo reproducible build
CI/CD pipelineÍt dùng, không tối ưuBest practice, được khuyến nghị
Thư mục node_modulesGiữ lại nếu có, chỉ thêm/update gói mớiLuô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?