-Save-dev có nghĩa là gì trong npm cài đặt grunt --save-dev


277

Tôi mới bắt đầu sử dụng Grunt.js . Nó khá khó để thiết lập và tôi đang ở điểm tạo một package.jsontập tin.

Theo hướng dẫn này , nó cho biết có 3 cách để tạo một package.jsontệp.

Đầu tiên là làm npm install grunt --save-dev

Nhưng nó --save-devcó nghĩa là gì? Tôi đã cố gắng tìm kiếm nhưng nó kết thúc trong vô vọng.


Tôi nghĩ rằng tôi quản lý để tìm thấy một số câu trả lời. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh

liên kết hướng dẫn bị hỏng
SteveC

Câu trả lời:


317

--save-dev: Gói sẽ xuất hiện trong devDependencies của bạn.

Theo tài liệu cài đặt npm .

Nếu ai đó đang có kế hoạch tải xuống và sử dụng mô-đun của bạn trong chương trình của họ, thì có lẽ họ không muốn hoặc không cần tải xuống và xây dựng khung kiểm tra hoặc tài liệu bên ngoài mà bạn sử dụng.

Nói cách khác, khi bạn chạy npm install, devDependencies của dự án của bạn sẽ được cài đặt, nhưng devDependencies cho bất kỳ gói nào mà ứng dụng của bạn phụ thuộc vào sẽ không được cài đặt; hơn nữa, các ứng dụng khác có ứng dụng của bạn làm phụ thuộc không cần phải cài đặt devDependencies của bạn. Các mô-đun như vậy chỉ cần thiết khi phát triển ứng dụng (ví dụ: grunt, mocha, v.v.).

Theo tài liệu pack.json

Chỉnh sửa: Cố gắng hình dung những gì npm installkhông:

  • dự án của bạn
    • cài đặt phụ thuộc
      • cài đặt phụ thuộc
        • cài đặt phụ thuộc
        • devDependency KHÔNG được cài đặt
      • devDependency KHÔNG được cài đặt
    • cài đặt devDependency
      • cài đặt phụ thuộc
      • devDependency KHÔNG được cài đặt

2
Theo mặc định, nó sẽ không cài đặt với phụ thuộc dev nhưng làm thế nào để tôi cài đặt sau đó? npm install --devcờ?
StanleyZheng

4
@stanzheng Tôi không chắc bạn cần biết gì. Nếu bạn đang ở trong một dự án và chạy npm install, devDepencies của dự án cũng sẽ được cài đặt. Bạn không muốn devDepencies phụ thuộc được cài đặt. Nếu bạn muốn phát triển trên gói npm, bạn sẽ thực git clone xxxhiện dự án đó và chạy npm installtrong đó.
Andreas Hultgren

3
"devDependencies cho ứng dụng phụ thuộc của ứng dụng của bạn sẽ không được cài đặt khi bạn chạy cài đặt npm" là không chính xác. Nếu tôi có gói.json và nó chỉ chứa "devDependencies" với các gói npm của tôi và sau đó tôi nhập "npm install", những "devDependecies" đó sẽ được cài đặt.
cốt lõi

6
Tôi đã cố gắng để hiểu và tôi đã không. Sau đó, tôi đã cố gắng để hiểu được trực quan và tôi đã không. Mỗi mục đạn có ý nghĩa gì? Một thư mục? Các mục nổi bật có nghĩa là gì? Một thư mục không tồn tại? Nếu đó là sự thật, làm thế nào bạn có thể liệt kê những thứ không tồn tại triệt để ?
Rafael Eyng

8
Để làm rõ, nếu npm installđược chạy trong dự án của bạn, tất cả các devDependencies trong pack.json sẽ được cài đặt, nhưng nếu bạn đóng gói dự án của bạn dưới dạng gói npm mới và xuất bản nó, khi ai đó cài đặt gói của bạn với cài đặt npm, thì devDependencies sẽ không cài đặt trên hệ thống của họ. Có đúng không? @stanzheng hoặc bạn có thể chạy cài đặt npm - sản xuất để cài đặt mọi thứ trong gói.json ngoại trừ phụ thuộc dev
rwilson04

99

Có (ít nhất) hai loại phụ thuộc gói bạn có thể chỉ ra trong các tệp pack.json:

  1. Những gói được yêu cầu để sử dụng mô-đun của bạn được liệt kê trong thuộc tính "phụ thuộc". Sử dụng npm, bạn có thể thêm các phụ thuộc đó vào tệp pack.json theo cách này:

    npm install --save packageName
  2. Các gói được yêu cầu để giúp phát triển mô-đun của bạn được liệt kê trong thuộc tính "devDependencies". Các gói này không cần thiết cho người khác sử dụng mô-đun, nhưng nếu họ muốn giúp phát triển mô-đun, các gói này sẽ cần thiết. Sử dụng npm, bạn có thể thêm các devDependencies vào tệp pack.json theo cách này:

    npm install --save-dev packageName

35

Để thêm vào câu trả lời của Andreas, bạn chỉ có thể cài đặt các phụ thuộc bằng cách sử dụng:

npm install --production

7

Tài liệu từ npm cho npm install <package-name> --savenpm install <package-name> --save-devcó thể được tìm thấy ở đây:

https://docs.npmjs.com/getting-started/USE-a-package.json#the-save-and-save-dev-install-flags

Một package.jsontệp khai báo siêu dữ liệu về mô-đun bạn đang phát triển. Cả hai lệnh nói trên đều sửa đổi package.jsontệp này . --savesẽ khai báo gói đã cài đặt (trong trường hợp này grunt) , như là một phụ thuộc cho mô-đun của bạn; --save-devsẽ tuyên bố nó như một sự phụ thuộc để phát triển mô-đun của bạn.

Hãy tự hỏi: gói cài đặt sẽ được yêu cầu để sử dụng mô-đun của tôi, hoặc nó sẽ chỉ được yêu cầu để phát triển nó?


6

Khi bạn sử dụng tham số "- lưu", phần phụ thuộc của bạn sẽ nằm trong số 1 bên dưới trong gói.json. Khi bạn sử dụng tham số "--save-dev", phần phụ thuộc của bạn sẽ nằm trong số 2 bên dưới trong pack.json.

# 1. "phụ thuộc": các gói này được yêu cầu bởi ứng dụng của bạn trong sản xuất.

# 2. "devDependencies": các gói này chỉ cần để phát triển và thử nghiệm


5

Đối với tôi câu trả lời đầu tiên có vẻ hơi khó hiểu, vì vậy để làm cho nó ngắn gọn và rõ ràng:

npm install <package_name>lưu bất kỳ gói được chỉ định vào 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 với một số cờ bổ sung:

npm install <package_name> --no-save Ngăn chặn tiết kiệm để phụ thuộc.

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 địa phương.

Bạn có thể đọc thêm tại dcu

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.