Tôi thấy hướng dẫn để cài đặt một gói với
npm install <package_name>
hoặc là
npm install <package_name> --save
hoặc là
npm install <package_name> --save-dev
Sự khác biệt giữa các tùy chọn này là gì?
Câu trả lời:
npm install <package_name> --save
cài đặt gói và cập nhật các phần phụ thuộc trong package.json của bạn. Vì câu hỏi này đã được hỏi nên đã có một thay đổi đối với npm, như vậy --save
đã trở thành tùy chọn mặc định, vì vậy bạn không cần sử dụng --save
để cập nhật các phần phụ thuộc.
npm install <package_name> --no_save
cài đặt gói nhưng không cập nhật các phần phụ thuộc như được liệt kê trong package.json của bạn.
npm install <package_name> ---save-dev
cập nhật devDependencies
trong gói của bạn. Chúng chỉ được sử dụng để thử nghiệm và phát triển cục bộ.
Bạn có thể đọc thêm tại https://docs.npmjs.com/getting-started/using-a-package.json .
npm install có 3 cờ tùy chọn, độc quyền để lưu hoặc cập nhật phiên bản gói trong gói chính của bạn .json:
-S, --save
: Gói sẽ xuất hiện trong phần phụ thuộc của bạn.
-D, --save-dev
: Gói sẽ xuất hiện trong devDependencies của bạn.
-O, --save-optional
: Gói sẽ xuất hiện trong Tùy chọn tùy chọn của bạn.
Khi sử dụng bất kỳ tùy chọn nào ở trên để lưu các phụ thuộc vào package.json của bạn, có một cờ tùy chọn bổ sung:
-E, --save-exact
: Các phần phụ thuộc đã lưu sẽ được định cấu hình với một phiên bản chính xác thay vì sử dụng toán tử phạm vi semver mặc định của npm. Hơn nữa, nếu bạn có npm-cowrap.json thì nó cũng sẽ được cập nhật.
<scope>
Là tùy chọn. Gói sẽ được tải xuống từ sổ đăng ký được liên kết với phạm vi được chỉ định. Nếu không có sổ đăng ký nào được liên kết với phạm vi đã cho thì sổ đăng ký mặc định được giả định. Xem npm-scope.
Lưu ý: nếu bạn không bao gồm ký hiệu @ trên tên phạm vi của mình, npm sẽ diễn giải đây là kho lưu trữ GitHub, hãy xem bên dưới. Tên phạm vi cũng phải được theo sau bởi dấu gạch chéo.
Ví dụ:
npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact
Lưu ý: Nếu có một tệp hoặc thư mục có tên <name>
trong thư mục làm việc hiện tại, thì nó sẽ cố gắng cài đặt nó và chỉ cố gắng tìm nạp gói theo tên nếu nó không hợp lệ.
(từ tài liệu chính thức) https://docs.npmjs.com/cli/install
--save
tùy chọn này vẫn hoạt động nhưng nó không còn bắt buộc nữa - các gói hiện được lưu vào các gói phụ thuộc theo mặc định . Logic hiện đang nghịch đảo - nếu bạn không muốn lưu gói của bạn, bạn cần phải xác định--no-save
Các --save
cờ không còn phục vụ một mục đích.
Trước đây, như các câu trả lời khác đã lưu ý, --save
cờ sẽ cập nhật các phần phụ thuộc trong package.json
tệp của dự án , nhưngnpm install
bây giờ bao gồm chức năng này theo mặc định.
Tại thời điểm này, nếu bạn muốn ngăn việc npm install
lưu các phụ thuộc, bạn phải sử dụng --no-save
cờ.
Cảm ơn Coruscate5 đã đề cập đến điều này trong bình luận của họ .
Thông tin thêm trong tài liệu npm-install :
npm install sẽ lưu mọi gói được chỉ định vào các gói phụ thuộc theo mặc định. Ngoài ra, bạn có thể kiểm soát vị trí và cách chúng được lưu bằng một số cờ bổ sung:
-P, --save-prod: Gói sẽ xuất hiện trong phần phụ thuộc của bạn. Đây là mặc định trừ khi -D hoặc -O hiện diện.
-D, --save-dev: Gói sẽ xuất hiện trong devDependencies của bạn.
-O, --save-option: Gói sẽ xuất hiện trong Tùy chọn tùy chọn của bạn.
--no-save: Ngăn lưu vào phần phụ thuộc.
Khi sử dụng bất kỳ tùy chọn nào ở trên để lưu các phụ thuộc vào package.json của bạn, có hai cờ tùy chọn bổ sung:
-E, --save-precision: Các phần phụ thuộc đã lưu sẽ được định cấu hình với một phiên bản chính xác thay vì sử dụng toán tử phạm vi semver mặc định của npm.
-B, --save-pack: Các phần phụ thuộc đã lưu cũng sẽ được thêm vào danh sách Gói phụ thuộc của bạn.