อะไรคือความแตกต่างระหว่างจริงnpm install
และnpm update
? ฉันควรใช้อันไหน
อะไรคือความแตกต่างระหว่างจริงnpm install
และnpm update
? ฉันควรใช้อันไหน
คำตอบ:
ความแตกต่างระหว่างการติดตั้ง npmและการจัดการอัพเดตของเวอร์ชันแพ็กเกจที่ระบุในpackage.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
}
}
สรุป : ข้อแตกต่างใหญ่เพียงอย่างเดียวคือโมดูลที่ติดตั้งไว้แล้วพร้อมการกำหนดเวอร์ชันแบบฟัซซี่ ...
npm install
npm update
นอกจากนี้ : install
และupdate
โดยค่าเริ่มต้นหมายเลขอ้างอิง devDependencies ที่แตกต่างกัน
npm install
จะติดตั้ง / อัปเดต devDependencies ยกเว้นว่า--production
มีการเพิ่มการตั้งค่าสถานะnpm update
จะไม่สนใจ devDependencies ยกเว้นว่า--dev
มีการเพิ่มค่าสถานะทำไมต้องใช้งานnpm install
เลย?
เพราะจะมากขึ้นเมื่อคุณมองไปนอกเหนือจากการจัดการการอ้างอิงของคุณnpm install
package.json
อย่างที่คุณเห็นในการติดตั้ง npmคุณสามารถ ...
PATH
) ใช้npm install -g <name>
--force
npm install --save somePackage
ประหยัด * เพื่อการพึ่งพา?
postinstall
ทำงานในการติดตั้ง แต่ไม่ใช่ในการปรับปรุง
install
และupdate
ทำงานแตกต่างกันใน URL git, แท็ก git ฯลฯ ที่ระบุไว้ในpackage.json
นั้นจะเป็นการดีหากเพิ่มกรณีเหล่านั้นลงในตัวอย่าง
1.3.0 -> 1.3.1
นี้จะคล้ายกับ^1.3.0
ที่การปรับปรุงรุ่นใหญ่คือ^
1.3.0 -> 1.4.0
npm ติดตั้งติดตั้งโมดูลทั้งหมดที่ระบุไว้ในpackage.json
ไฟล์และการอ้างอิงของพวกเขา
การอัพเดต npm จะอัพเดตแพ็กเกจทั้งหมดในnode_modules
ไดเร็กทอรีและการพึ่งพา
npm install expressติดตั้งเพียงโมดูลด่วนและการอ้างอิง
npm update express express updates module (เริ่มต้นด้วย npm@2.x จะไม่อัปเดตการอ้างอิง)
ดังนั้นการอัปเดตจึงมีไว้สำหรับเมื่อคุณมีโมดูลอยู่แล้วและต้องการรับรุ่นใหม่
npm install
หรือnpm update
? หรือในคำอื่น ๆ ตอนนี้ฉันใช้npm install
และดูเหมือนว่าจะทำปรับปรุงได้เป็นอย่างดีมีเหตุผลว่าทำไมฉันควรที่เคยใช้ใด ๆnpm update
?
update
จะอัปเดตเป็นเวอร์ชันล่าสุดเสมอโดยไม่คำนึงถึง package.json ในขณะที่install
จะเคารพเวอร์ชันที่ให้ใน package.json
update
ติดตั้ง (หรืออัปเดตเป็น) โมดูลรุ่นล่าสุด install
ติดตั้งโมดูลรุ่นล่าสุดหากไม่มีโมดูลนั้นจะเก็บรุ่นปัจจุบันไว้
npm update
จะอัปเดตเป็นเวอร์ชั่นล่าสุดโดยอิงตามแพ็คเกจของคุณ หากคุณมี "express": "3.x" และคุณใช้เวอร์ชัน 3.1.0 แท็กนั้นจะอัปเดตเป็นแท็ก 3.x ล่าสุด หากมีรุ่น 4.x จะไม่ติดตั้งรุ่นล่าสุด
ในกรณีส่วนใหญ่สิ่งนี้จะติดตั้งโมดูลรุ่นล่าสุดที่เผยแพร่เมื่อ npm
npm install express --save
หรือดีกว่าในการอัพเกรดโมดูลเป็นรุ่นล่าสุดใช้:
npm install express@latest --save --force
--save
: แพคเกจจะปรากฏในการอ้างอิงของคุณ
ข้อมูลเพิ่มเติม: ติดตั้ง npm
npm install express@latest --save --force
เป็นสิ่งที่ฉันต้องการ
มีการพูดถึงความแตกต่างมากมาย นี่คืออีกหนึ่ง:
เล่นที่ด้านบนของไดเรกทอรีต้นทางของคุณจะเรียกใช้สคริปต์ต่างๆ:npm install
, , , ขึ้นอยู่กับสิ่งที่สคริปต์เหล่านี้ทำ a อาจทำงานได้มากกว่าการติดตั้งการพึ่งพาprepublish
preinstall
install
postinstall
npm install
ฉันเพิ่งมีกรณีใช้ที่prepublish
จะโทรmake
และMakefile
ได้รับการออกแบบมาเพื่อดึงการอ้างอิงถ้าpackage.json
มีการปรับปรุง การโทรnpm install
จากภายในMakefile
จะนำไปสู่การเรียกซ้ำแบบไม่สิ้นสุดในขณะที่การโทรnpm update
ทำงานได้ดีการติดตั้งการอ้างอิงทั้งหมดเพื่อให้บิลด์สามารถดำเนินการต่อได้แม้ว่าจะmake
ถูกเรียกโดยตรง
redis
โมดูลและother_module
ต้องใช้รุ่นเก่าredis
, npm install other_module
จะรับประกันได้ว่าother_module
จะใช้รุ่นเก่า มันอาจเพิ่มother_module/node_modules/redis
ถ้าจำเป็น
npm update
: ติดตั้งและอัพเดตด้วยโมดูลโหนดล่าสุดซึ่งอยู่ใน package.json
npm install
: ติดตั้งโมดูลโหนดที่กำหนดไว้ใน package.json (โดยไม่ต้องอัพเดต)
npm update
จะละเว้นการพึ่งพาจำนวนpackage-lock.json
มาก จะมีแพคเกจที่จำเป็นทั้งหมดที่มีอยู่และpackage-lock.json
ถูกต้องฉันมักจะมีการดำเนินการหลังจากที่เหมาะสมnpm install
npm update
~1.3
อะไร?