Sự khác biệt thực tế giữa npm install
và là npm update
gì? Khi nào nên sử dụng?
Sự khác biệt thực tế giữa npm install
và là npm update
gì? 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 install
npm update
Ngoài ra : install
và update
theo mặc định xử lý devDependencies khác nhau
npm install
sẽ cài đặt / cập nhật devDependencies trừ khi --production
cờ được thêm vàonpm update
sẽ bỏ qua devDependencies trừ khi --dev
cờ được thêm vàoTại sao lại sử dụng npm install
?
Bởi vì npm install
là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>
--force
npm install --save somePackage
lưu * vào phụ thuộc không?
postinstall
chạy khi cài đặt, nhưng không cập nhật.
install
và update
hoạt động khác nhau trên các URL git, thẻ git, v.v. được chỉ định trong package.json
thì 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.json
tệ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_modules
thư 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 install
hay npm update
? Hay nói cách khác, tôi hiện đang sử dụng npm install
và 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 update
không?
update
sẽ luôn cập nhật lên phiên bản mới nhất, bất kể gói.json, trong khi install
sẽ tôn trọng phiên bản được cung cấp trong pack.json?
update
cài đặt (hoặc cập nhật lên) phiên bản mới nhất của mô-đun. install
cà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 update
sẽ 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 --force
chí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 prepublish
sẽ gọi make
và 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 install
từ bên trong Makefile
sẽ dẫn đến một đệ quy vô hạn, trong khi gọi npm update
chỉ 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.
redis
mô-đun của bạn và other_module
yêu cầu phiên bản cũ hơn redis
, npm install other_module
sẽ đảm bảo other_module
sẽ sử dụng phiên bản cũ hơn. Nó có thể thêm other_module/node_modules/redis
nế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 update
sẽ 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.json
chính xác, tôi luôn phải thực hiện npm install
ngay sau đó npm update
.
~1.3
?