2015-01-07 25 views
8

Tôi hiểu sự khác nhau giữa npm install somethingnpm install something --save (cho bất cứ ai tự hỏi là gì, người đầu tiên sẽ cài đặt phụ thuộc duy nhất trong khi sau này sẽ cài đặt phụ thuộc và thêm nó vào gói của bạn .json).NPM cài đặt --save, việc sử dụng không tiết kiệm

Tuy nhiên, tôi không hiểu tại sao lại có tùy chọn --save ở vị trí đầu tiên. Nói cách khác, tại sao bạn lại muốn cài đặt một phụ thuộc mà không cần thêm nó vào tệp package.json của bạn? Tại sao tùy chọn --save không được mặc định?

Rất nhiều trang web/mô-đun npm/SaaS đề xuất cài đặt mô-đun của họ bằng cách sử dụng npm install something (ví dụ như newrelic là một trong số đó), tôi có thiếu gì đó không?

Chỉnh sửa: Starting from NPM 5, --save hiện được bật theo mặc định.

+0

Nếu bạn đang cài đặt một số công cụ gỡ lỗi chẳng hạn, nói 'nodemon', bạn không muốn nó trong package.json – surajck

Trả lời

9
  1. Bạn sẽ có một trường hợp như bạn cần một số mô-đun để cài đặt mà không thêm phụ thuộc vào package.json tệp, ví dụ: bạn chỉ muốn thử một số mô đun và không chắc chắn bạn sẽ thực sự sử dụng mô-đun đó trong sản xuất hay trong khi triển khai, do đó, thay vào đó, hãy thêm phụ thuộc vào mô-đun vào package.json, hãy thử dùng mà không cần sử dụng --save. đây là lý do tại sao npm install mà không có --save tồn tại.

  2. Nhưng đối với hầu hết các mô-đun của bạn, bạn có thể yêu cầu sử dụng --save, ví dụ: npm install express --save, trong trường hợp này bạn chắc chắn biết rằng bạn sẽ sử dụng Express cho ứng dụng của bạn.

  3. Kịch bản khác, không sử dụng --save, sẽ là, npm install heapdump hoặc npm install nodemon, tôi sẽ sử dụng nó để thử nghiệm hiệu suất ứng dụng của tôi, còn không muốn thêm một sự phụ thuộc trong package.json :)

  4. Ngoài ra, Như @surajck đã nói trong nhận xét dưới đây: khi bạn đang thực hiện cài đặt chung, trong trường hợp đó, việc thêm phụ thuộc bằng cách sử dụng --save, vào package.json sẽ không có ý nghĩa.

+2

Sẽ không dễ dàng hơn/tốt hơn để luôn sử dụng '--save' và chạy [depcheck ] (https://www.npmjs.com/package/depcheck) trước khi comitting/deploying? – Nepoxx

+0

, cũng như trang kiểm tra trên npm nói, ** Nhưng đó cũng là một rắc rối. ** –

+1

@Nepoxx khi bạn đang thực hiện cài đặt toàn cầu, trong trường hợp đó việc thêm nó vào package.json sẽ không có ý nghĩa. – surajck

8

Tôi chỉ học được một trick đẹp từ Javascript Best Practices nhiên Jonathan Mills' trên Pluralsight. Từ nhà ga:
npm config set save=true
Bây giờ tôi không cần nhớ --save nữa. Và bây giờ tôi cũng sử dụng
npm config set save-exact=true
Vì tôi muốn phiên bản chính xác của gói không phải là tiền tố ^.

Các vấn đề liên quan