ฉันเห็นคำแนะนำในการติดตั้งแพ็คเกจด้วย
npm install <package_name>
หรือ
npm install <package_name> --save
หรือ
npm install <package_name> --save-dev
ตัวเลือกเหล่านี้แตกต่างกันอย่างไร?
ฉันเห็นคำแนะนำในการติดตั้งแพ็คเกจด้วย
npm install <package_name>
หรือ
npm install <package_name> --save
หรือ
npm install <package_name> --save-dev
ตัวเลือกเหล่านี้แตกต่างกันอย่างไร?
คำตอบ:
npm install <package_name> --save
ติดตั้งแพ็กเกจและอัพเดตการอ้างอิงใน package.json ของคุณ เนื่องจากคำถามนี้ถูกถามจึงมีการเปลี่ยนแปลงเป็น npm ดังนั้น--save
จึงกลายเป็นตัวเลือกเริ่มต้นดังนั้นคุณจึงไม่จำเป็นต้องใช้--save
เพื่ออัปเดตการอ้างอิง
npm install <package_name> --no_save
ติดตั้งแพ็กเกจ แต่ไม่อัปเดตการอ้างอิงตามที่ระบุไว้ใน package.json ของคุณ
npm install <package_name> ---save-dev
อัปเดตdevDependencies
ในแพ็คเกจของคุณ สิ่งเหล่านี้ใช้สำหรับการทดสอบและพัฒนาในพื้นที่เท่านั้น
คุณสามารถอ่านเพิ่มเติมได้ที่https://docs.npmjs.com/getting-started/using-a-package.json
การติดตั้ง npm ใช้แฟล็กที่เป็นตัวเลือกพิเศษ 3 แฟล็กซึ่งบันทึกหรืออัปเดตเวอร์ชันแพ็กเกจในแพ็กเกจหลักของคุณ json:
-S, --save
: แพ็คเกจจะปรากฏในการอ้างอิงของคุณ
-D, --save-dev
: แพ็คเกจจะปรากฏใน devDependencies ของคุณ
-O, --save-optional
: แพ็คเกจจะปรากฏใน optionalDependencies ของคุณ
เมื่อใช้ตัวเลือกใด ๆ ข้างต้นเพื่อบันทึกการอ้างอิงลงใน package.json ของคุณจะมีแฟล็กเพิ่มเติมที่เป็นทางเลือก:
-E, --save-exact
: การอ้างอิงที่บันทึกไว้จะได้รับการกำหนดค่าด้วยเวอร์ชันที่แน่นอนแทนที่จะใช้ตัวดำเนินการช่วงค่าเริ่มต้นของ npm นอกจากนี้หากคุณมี npm-shrinkwrap.json ก็จะได้รับการอัปเดตเช่นกัน
<scope>
เป็นทางเลือก แพคเกจจะถูกดาวน์โหลดจากรีจิสทรีที่เกี่ยวข้องกับขอบเขตที่ระบุ หากไม่มีการเชื่อมโยงรีจิสทรีกับขอบเขตที่กำหนดระบบจะถือว่ารีจิสทรีเริ่มต้น ดู npm-scope
หมายเหตุ: หากคุณไม่รวม @ -symbol ไว้ในชื่อขอบเขตของคุณ npm จะตีความสิ่งนี้เป็นที่เก็บ GitHub แทนดูด้านล่าง ชื่อขอบเขตต้องตามด้วยเครื่องหมายทับ
ตัวอย่าง:
npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact
หมายเหตุ: หากมีชื่อไฟล์หรือโฟลเดอร์<name>
อยู่ในไดเร็กทอรีการทำงานปัจจุบันระบบจะพยายามติดตั้งและพยายามดึงแพ็กเกจตามชื่อเท่านั้นหากไม่ถูกต้อง
(จากเอกสารอย่างเป็นทางการ) https://docs.npmjs.com/cli/install
--save
ตัวเลือกยังคงปรากฏในการทำงานก็คือไม่จำเป็นต้องใช้อีกต่อไป - แพคเกจจะถูกบันทึกไว้ในขณะนี้เพื่อการอ้างอิงโดยค่าเริ่มต้น ตอนนี้ตรรกะกลับกันแล้ว - ถ้าคุณไม่ต้องการบันทึกแพ็คเกจของคุณคุณต้องระบุ--no-save
--save
ธงไม่ได้มีจุดมุ่งหมาย
ก่อนหน้านี้ตามที่คำตอบอื่นระบุไว้--save
แฟล็กจะอัปเดตการอ้างอิงในpackage.json
ไฟล์ของโปรเจ็กต์ แต่npm install
ตอนนี้รวมฟังก์ชันนี้ไว้แล้วโดยค่าเริ่มต้น
ณ จุดนี้หากคุณต้องการป้องกันไม่ให้npm install
บันทึกการอ้างอิงคุณต้องใช้--no-save
แฟล็ก
ขอขอบคุณที่ Coruscate5 สำหรับการกล่าวขวัญนี้ของพวกเขาแสดงความคิดเห็น
ข้อมูลเพิ่มเติมในเอกสารการติดตั้ง npm :
การติดตั้ง npm จะบันทึกแพ็กเกจที่ระบุลงในการอ้างอิงตามค่าเริ่มต้น นอกจากนี้คุณสามารถควบคุมสถานที่และวิธีการบันทึกด้วยแฟล็กเพิ่มเติม:
-P, --save-prod: แพ็คเกจจะปรากฏในการอ้างอิงของคุณ นี่คือค่าเริ่มต้นเว้นแต่จะมี -D หรือ -O อยู่
-D, --save-dev: แพ็คเกจจะปรากฏใน devDependencies ของคุณ
-O, --save-optional: Package จะปรากฏใน optionalDependencies ของคุณ
- ไม่บันทึก: ป้องกันไม่ให้บันทึกเป็นการอ้างอิง
เมื่อใช้ตัวเลือกใด ๆ ข้างต้นเพื่อบันทึกการอ้างอิงลงใน package.json ของคุณจะมีแฟล็กที่เป็นทางเลือกเพิ่มเติมสองแฟล็ก:
-E, --save-แน่นอน: การอ้างอิงที่บันทึกไว้จะถูกกำหนดค่าด้วยเวอร์ชันที่แน่นอนแทนที่จะใช้ตัวดำเนินการช่วง semver เริ่มต้นของ npm
-B, --save-bundle: การอ้างอิงที่บันทึกไว้จะถูกเพิ่มลงในรายการ bundleDependencies ของคุณ