Tùy chọn --save để cài đặt npm là gì?


2037

Tôi thấy một số hướng dẫn trong đó lệnh là:

npm install --save

Không những gì --savelựa chọn nghĩa là gì?

Không thể tìm thấy câu trả lời trên Google.


32
@ Tom- --save: Package will appear in your dependencies.
WiredPrairi

7
Bạn có thể sử dụng phím tắt -S và -D ở đó -S là --save và -D là '--save-dev. --save (hoặc đơn giản -S): Gói sẽ xuất hiện trong phần phụ thuộc của bạn. --save-dev (hoặc đơn giản -D): Gói sẽ xuất hiện trong devDependencies của bạn.
Gil Epshtain

5
@WiredPrairi cảm ơn tôi đã cố gắng npm install (--help | -h | -help ..)và không có gì.
juliangonzalez

2
thx @Dmitri, tôi đã có cùng một vấn đề. hãy đến NPM thêm nó vào trang MAN cho công cụ của bạn
Erdinc Ay

67
Tôi không hiểu lý do căn bản đằng sau quyết định loại bỏ ngay cả việc chỉ đề cập đến tùy chọn này khỏi tài liệu và trang trợ giúp ít nhất cũng không tán thành nó, ít nhất là với một cảnh báo trong chính công cụ. Trong khi đó những người mới được tiếp xúc với nó thông qua hàng trăm hướng dẫn. Sau đó, họ cố gắng tìm hiểu những gì nó làm và phải lãng phí 20 phút để đọc các tài liệu, để cuối cùng kết thúc việc đọc lịch sử npm trên stackoverflow. Thật kỳ lạ, ngăn chặn sự lãng phí thời gian khổng lồ này (nếu mức độ phổ biến của câu hỏi là bất kỳ dấu hiệu nào) là một trong những mục đích của tài liệu.
Michael Ekoka

Câu trả lời:


2478

Cập nhật 5 giờ chiều:

Kể từ npm 5.0.0 , các mô-đun đã cài đặt được thêm vào như một phụ thuộc theo mặc định, do đó --savetùy chọn này không còn cần thiết nữa. Các tùy chọn lưu khác vẫn tồn tại và được liệt kê trong tài liệu cho npm install.

Câu trả lời gốc:

Trước phiên bản 5, NPM chỉ cần cài đặt một gói theo node_modulesmặc định. Khi bạn đang cố gắng cài đặt các phụ thuộc cho ứng dụng / mô-đun của mình, trước tiên bạn cần cài đặt chúng, sau đó thêm chúng (cùng với số phiên bản phù hợp) vào dependenciesphần của bạn package.json.

Các --savetùy chọn hướng dẫn NPM để bao gồm các bên trong gói của dependenciesphần của bạn package.jsontự động, do đó tiết kiệm cho bạn một bước bổ sung.

Ngoài ra, có các tùy chọn bổ sung --save-dev--save-optionallưu gói theo devDependenciesoptionalDependenciestương ứng. Điều này hữu ích khi cài đặt các gói chỉ phát triển, như grunthoặc thư viện thử nghiệm của bạn.


141
Nghiêm túc mà nói, điều này được ghi nhận ở bất cứ đâu? Tôi không thể tìm thấy nó trên Google hoặc trong npmtrợ giúp.
Christian Ternus

112
Sẽ thật tuyệt nếu tài liệu cho việc này xuất hiện khi npm install --helpđược sử dụng.
Mark Stosberg

11
@jimsmith: Kể từ npm 5.0, nó là mặc định.
voithos

3
"Cập nhật npm" trên NPM 5 có sửa đổi gói.json theo mặc định không?
Igor Okorokov

6
@voithos Đối với tôi NPM 5 cập nhật các phiên bản gói trong pack.json. Để tránh điều đó, tôi cần chạy 'cập nhật npm - không lưu'
Igor Okorokov

219

Để thêm gói trong phụ thuộc:

npm install my_dep --save

hoặc là

npm install my_dep -S

hoặc là

npm i my_dep -S

Để thêm gói trong devDependencies

npm install my_test_framework --save-dev

hoặc là

npm install my_test_framework -D

hoặc là

npm i my_test_framework -D

pack.json nhập mô tả hình ảnh ở đây


30
hãy cẩn thận khi sử dụng các phiên bản phím tắt -S -Dnhư chúng phải viết hoa. Tôi luôn mắc lỗi này và npm không phàn nàn hoặc thêm nó vào
gói.json

7
Nó không phàn nàn vì -s(chữ thường) là dành cho --silenttùy chọn và -ddành cho thông tin loglevel là cả hai phím tắt hợp lệ.
tanvi

131

Nó sẽ không làm gì nếu bạn không có package.jsontập tin. Bắt đầu bằng cách chạy npm initđể tạo một cái. Sau đó, các cuộc gọi đến npm install --savehay npm install --save-devhay npm install --save-optionalsẽ cập nhật package.jsonvào danh sách phụ thuộc của bạn.


37
Chỉ cần phát hiện ra rằng nó hoạt động hồi tố (có vẻ như). Bạn có thể chạy npm install --save-devđầu tiên, sau đó npm init và gói.json của bạn sẽ được điền.
Jacob Wang

20

theo NPM Đốc

nhập mô tả hình ảnh ở đây

Vì vậy, có vẻ như bằng cách chạy npm install package_name, phụ thuộc gói sẽ được tự động thêm vào pack.json phải không?


1
Tôi đoán - không lưu là sử dụng khi bạn muốn chức năng như npm <5
Abhiroj Panwar

Tôi thấy, npm config ls -lcho thấy theo mặc định, các tùy chọn save-xxx đều sai, chỉ lưu là đúng.
ROROROOROROR

Có vẻ như npm sẽ không kích hoạt bất kỳ lỗi nào nếu bạn đặt tùy chọn không tồn tại, như --save-xxxxxx. Nó chỉ cần bỏ qua nó và hành vi mặc định --save-prod sẽ bị ảnh hưởng. Có lẽ --save đến từ một số phiên bản npm cũ.
leon

13

Bạn cũng có thể sử dụng -S, -Dhoặc -Plà tương đương với tiết kiệm gói đến một sự phụ thuộc ứng dụng, một sự phụ thuộc dev hoặc phụ thuộc prod. Xem thêm các phím tắt NPM bên dưới:

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-P: --save-prod
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long

Danh sách các phím tắt này có thể thu được bằng cách chạy lệnh sau:

$ npm help 7 config

7

Kể từ npm 5, việc sử dụng --save-prod(hoặc -P) sẽ thuận lợi hơn so với --saveviệc thực hiện điều tương tự, như đã nêu trong cài đặt npm . Cho đến nay, --savevẫn hoạt động nếu được cung cấp.


Điều này cần phải đi lên trên cùng để tiết kiệm cho tất cả chúng ta một mắt đọc các biến thể, mâu thuẫn và chiếm quyền điều khiển. SO cần khuyến khích các câu trả lời ngắn gọn với các URL hợp lệ để chúng tôi có thể tránh CRUD và tiếp tục với công việc của mình. (Quora có câu trả lời gọn gàng 'Câu trả lời này có liên quan không' v.v. và tôi thậm chí trước đó đã đề nghị SO làm điều này) \ n Sucks rằng tài liệu nút chính thức không đề cập đến các tùy chọn cũ hơn (không còn tồn tại) và hầu hết các tham chiếu nút dường như là trước -5.0, gửi đầu của chúng tôi cho một spin.
killjoy

6

Kể từ npm 5, npm giờ sẽ lưu theo mặc định. Trong trường hợp, nếu bạn muốn npm hoạt động theo kiểu cũ tương tự (không có tự động lưu) với cách nó hoạt động trong các phiên bản trước, bạn có thể cập nhật tùy chọn cấu hình để bật tự động như dưới đây.

npm config set save false

Để có được cài đặt hiện tại, bạn có thể thực hiện lệnh sau:

npm config get save

Nguồn: https://blog.pizer.com/what-you-need-ledge-npm-5/


6

npm install package_x --save

Gói đã cho (gói_x) sẽ được lưu trong gói.json bên trong các phụ thuộc. Nếu bạn thêm

npm install <<package_x>> --save-dev

sau đó nó sẽ được lưu trong devDependencies .


12
Câu trả lời của bạn đóng góp gì mà các câu trả lời khác chưa được đề cập?
Pedro A

@Pedro A - Sự nghi ngờ của tôi là anh chàng viết lại những gì anh ta vừa đọc; sau đó có bạn bè của anh ấy cho anh ấy phiếu bầu.
IAM_AL_X

3

Cách dễ dàng hơn (và tuyệt vời hơn) để thêm các phụ thuộc vào gói.json của bạn là làm như vậy từ dòng lệnh, gắn cờ lệnh cài đặt npm bằng --save hoặc --save-dev, tùy thuộc vào cách bạn muốn sử dụng sự phụ thuộc đó.


3

npm install --savehoặc npm install --save-devtại sao chúng tôi chọn 1 tùy chọn giữa hai cái này trong khi cài đặt gói trong dự án của chúng tôi.

mọi thứ rõ ràng từ các câu trả lời ở trên npm install --savesẽ thêm mục nhập vào dependencytrường trong pacakage.jsontệp và một mục khác trong dev-dependency.

Vì vậy, câu hỏi đặt ra tại sao chúng ta cần nhập mô-đun cài đặt vào tệp pacakge.json bởi vì bất cứ khi nào chúng tôi đăng ký mã githoặc đưa mã của mình cho một số người, chúng tôi luôn cung cấp hoặc kiểm tra nó mà không có node-moduleskích thước rất lớn và cũng có sẵn tại nơi chung để tránh điều này, chúng tôi làm điều đó.

Vì vậy, làm thế nào người khác sẽ nhận được tất cả các mô-đun cụ thể hoặc cần thiết cho dự án đó để câu trả lời là from the package.jsontệp có mục nhập của tất cả các gói cần thiết để chạy hoặc phát triển dự án đó.

Vì vậy, sau khi nhận được we simply need to run the npm installlệnh mã, nó sẽ đọc tệp pack.json và cài đặt các gói cần thiết.


2

npm i (Tên gói) - lưu

Đơn giản, bằng cách sử dụng lệnh trên, chúng tôi sẽ không cần phải viết tên gói trong tệp pack.json, nó sẽ tự động thêm tên và phụ thuộc của nó với phiên bản mà bạn sẽ cần khi bạn đi sản xuất hoặc thiết lập vào lúc khác.

npm giúp cài đặt

Lệnh trên sẽ giúp tìm ra thêm tùy chọn và sửa def.shown trong pic nhập mô tả hình ảnh ở đây

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.