Sự khác biệt thực tế giữa npm installvà là npm updategì? Khi nào nên sử dụng?
Sự khác biệt thực tế giữa npm installvà là npm updategì? Khi nào nên sử dụng?
Câu trả lời:
Sự khác biệt giữa cài đặt npm và xử lý cập nhật npm của các phiên bản gói được chỉ định trong pack.json :
{
"name": "my-project",
"version": "1.0", // install update
"dependencies": { // ------------------
"already-installed-versionless-module": "*", // ignores "1.0" -> "1.1"
"already-installed-semver-module": "^1.4.3" // ignores "1.4.3" -> "1.5.2"
"already-installed-versioned-module": "3.4.1" // ignores ignores
"not-yet-installed-versionless-module": "*", // installs installs
"not-yet-installed-semver-module": "^4.2.1" // installs installs
"not-yet-installed-versioned-module": "2.7.8" // installs installs
}
}
Tóm tắt : Sự khác biệt lớn duy nhất là một mô-đun đã được cài đặt với phiên bản mờ ...
npm installnpm updateNgoài ra : installvà updatetheo mặc định xử lý devDependencies khác nhau
npm installsẽ cài đặt / cập nhật devDependencies trừ khi --productioncờ được thêm vàonpm updatesẽ bỏ qua devDependencies trừ khi --devcờ được thêm vàoTại sao lại sử dụng npm install?
Bởi vì npm installlàm nhiều hơn khi bạn nhìn bên cạnh việc xử lý các phụ thuộc của bạn trong package.json. Như bạn có thể thấy trong cài đặt npm, bạn có thể ...
PATH) bằng cách sử dụngnpm install -g <name>--forcenpm install --save somePackagelưu * vào phụ thuộc không?
postinstallchạy khi cài đặt, nhưng không cập nhật.
installvà updatehoạt động khác nhau trên các URL git, thẻ git, v.v. được chỉ định trong package.jsonthì sẽ rất tuyệt nếu thêm các trường hợp đó vào ví dụ.
1.3.0 -> 1.3.1Điều này tương tự ^1.3.0, trong đó ^phiên bản chính cập nhật 1.3.0 -> 1.4.0.
cài đặt npm cài đặt tất cả các mô-đun được liệt kê trên package.jsontệp và các phụ thuộc của chúng.
cập nhật npm cập nhật tất cả các gói trong node_modulesthư mục và các phụ thuộc của chúng.
npm install express chỉ cài đặt mô đun express và các phụ thuộc của nó.
npm update express express module (bắt đầu với npm@2.x, nó không cập nhật phụ thuộc của nó).
Vì vậy, các bản cập nhật dành cho khi bạn đã có mô-đun và muốn có phiên bản mới.
npm installhay npm update? Hay nói cách khác, tôi hiện đang sử dụng npm installvà dường như cũng đang cập nhật, có lý do nào khiến tôi phải sử dụng npm updatekhông?
updatesẽ luôn cập nhật lên phiên bản mới nhất, bất kể gói.json, trong khi installsẽ tôn trọng phiên bản được cung cấp trong pack.json?
updatecài đặt (hoặc cập nhật lên) phiên bản mới nhất của mô-đun. installcài đặt phiên bản mới nhất của mô-đun nếu nó không được trình bày theo cách khác giữ phiên bản hiện tại.
npm updatesẽ cập nhật lên phiên bản mới nhất dựa trên gói.json của bạn, không phân biệt. Nếu bạn có "express": "3.x" và bạn đang ở phiên bản 3.1.0, nó sẽ cập nhật lên thẻ 3.x mới nhất. Nếu có phiên bản 4.x, nó sẽ không cài đặt mới nhất.
Trong hầu hết các trường hợp, điều này sẽ cài đặt phiên bản mới nhất của mô-đun được xuất bản vào npm.
npm install express --save
hoặc tốt hơn để nâng cấp mô-đun lên phiên bản mới nhất sử dụng:
npm install express@latest --save --force
--save: Gói sẽ xuất hiện trong phần phụ thuộc của bạn.
Thông tin thêm: npm-install
npm install express@latest --save --forcechính xác là những gì tôi muốn.
Nhiều sự phân biệt đã được đề cập. Đây là một trong những:
Chạy npm installở phía trên cùng của thư mục nguồn của bạn sẽ chạy các kịch bản khác nhau: prepublish, preinstall, install, postinstall. Tùy thuộc vào những gì các kịch bản này làm, mộtnpm install có thể làm nhiều việc hơn đáng kể so với chỉ cài đặt các phụ thuộc.
Tôi vừa có một trường hợp sử dụng prepublishsẽ gọi makevà Makefileđược thiết kế để tìm nạp các phụ thuộc nếu package.jsonđược cập nhật. Gọi npm installtừ bên trong Makefilesẽ dẫn đến một đệ quy vô hạn, trong khi gọi npm updatechỉ hoạt động tốt, cài đặt tất cả các phụ thuộc để việc xây dựng có thể tiến hành ngay cả khi makeđược gọi trực tiếp.
redismô-đun của bạn và other_moduleyêu cầu phiên bản cũ hơn redis, npm install other_modulesẽ đảm bảo other_modulesẽ sử dụng phiên bản cũ hơn. Nó có thể thêm other_module/node_modules/redisnếu cần thiết.
npm update: cài đặt và cập nhật với các mô-đun nút mới nhất có trong pack.json
npm install: cài đặt các mô-đun nút được xác định trong gói.json (không cập nhật)
npm updatesẽ bỏ qua một số lượng lớn các phụ thuộc trong package-lock.json. Để có tất cả các gói yêu cầu có sẵn và package-lock.jsonchính xác, tôi luôn phải thực hiện npm installngay sau đó npm update.
~1.3?