Cờ --save làm gì với cài đặt npm


102

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:


86

npm install <package_name> --savecà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-devcập nhật devDependenciestrong 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 .


3
Đây là câu trả lời hàng đầu cho tìm kiếm trên google của tôi về "npm --save flag". Vui lòng xem xét cập nhật nó với các thông tin chính xác, ví dụ mà bây giờ --save là mặc định, và --no-tiết kiệm là cần thiết để không cập nhật danh sách phụ thuộc trong package.json
Jonas Rosenqvist

52

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


51
Mặc dù --savetù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
Coruscate5

Cảm ơn, @ Coruscate5 đã trả lời chính xác câu hỏi của tôi.
Kon

28

Các --savecờ 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 ý, --savecờ sẽ cập nhật các phần phụ thuộc trong package.jsontệ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 installlưu các phụ thuộc, bạn phải sử dụng --no-savecờ.

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.


cảm ơn vì câu trả lời được cập nhật để bao quát tình hình hiện tại
DrCord

Nó làm sáng tỏ mối nghi ngờ lâu nay của tôi. Cảm ơn
Alok Ranjan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.