ลบการอ้างอิงจาก package.json โดยอัตโนมัติเมื่อใช้ npm uninstall


84

หลังจากnpm initฉันสามารถเพิ่มการอ้างอิงใน package.json ของฉันโดยใช้สิ่งนี้:

npm install package --save

และพูดว่าฉันต้องการuninstallแพคเกจและฉันทำได้โดยทำ:

npm uninstall package

แต่ฉันต้องการให้ package.json ของฉันได้รับการอัปเดตด้วยโดยที่ฉันไม่ต้องไปที่ไฟล์ด้วยตนเองและลบบรรทัดนั้น

จากเอกสาร npm ระบุว่า:

เป็นส่วนเสริมอย่างเคร่งครัดดังนั้นจึงไม่ลบตัวเลือกออกจาก package.json ของคุณโดยไม่มีเหตุผลที่ดีจริงๆที่จะทำเช่นนั้น

ฉันแค่อยากรู้ว่ามันเป็นไปได้ไหม


เนื่องจากการอ้างอิงของฉันถูกเพิ่มโดยอัตโนมัติใน package.json ทุกครั้งที่ฉันติดตั้งด้วยแฟล็ก (--save) ฉันจึงสงสัยว่ามีวิธีลบการอ้างอิงออกจาก package.json เมื่อใดก็ตามที่ฉันถอนการติดตั้งแพ็คเกจด้วย
กรีดร้อง

คำตอบ:


151

ใช้--saveธงเดียวกัน หากคุณติดตั้งการอ้างอิงด้วย:

$> npm install grunt-cli --save

คุณสามารถถอนการติดตั้งได้โดยมีการอัปเดต package.json โดยใช้:

$> npm uninstall grunt-cli --save

แฟล็ก 'บันทึก' บอกให้ npm อัปเดต package.json ตามการดำเนินการที่คุณเพิ่งทำ


3
ฉันใช้ npm กับ ember-cli และฉันต้องใช้--save-devแทน--save.
gerry3

4
หากคุณติดตั้งด้วย --save-dev การถอนการติดตั้งจะเป็น --save-dev เช่นกันเนื่องจาก - บันทึกจะบันทึกลงในdependenciesส่วนของไฟล์ package.json ในขณะที่ --save-dev จะบันทึกลงในdevDependenciesส่วน
Mike ' Pomax 'Kamermans

7
ฉันมาไกลตั้งแต่โพสต์คำถามนี้และนี่คือเคล็ดลับเล็ก ๆ น้อย ๆ คุณสามารถใช้npm i <package_name> -Sเพื่อเพิ่มในdependenciesรายการของคุณหรือnpm i <package_name> -Dเพิ่มลงในdev-dependenciesไฟล์. ธงเดียวกันนี้ใช้สำหรับการลบโดยมีnpm rm <package_name> -Sหรือnpm rm <package_name> -D
shriek

1
แต่โปรดทราบว่าสิ่งเหล่านี้เป็นเพียงค่าสถานะชวเลขที่เทียบเท่าสำหรับ --save และ --save-dev ดูnpm helpค่าสถานะทั้งหมดและรายการเทียบเท่าชวเลข (สิ่งใดก็ตามที่ติดตั้ง -S หรือ - บันทึกและถอนการติดตั้งโดยใช้อย่างใดอย่างหนึ่งเช่นกัน npm ไม่เห็นว่าแตกต่างกันเพียงแค่ "พิมพ์น้อยลง" สำหรับ -S)
Mike 'Pomax' Kamermans

1
คุณเป็นนักบุญในหมู่มนุษย์
John Von Neumann

0

ในกรณีของฉัน - บันทึกไม่ได้ล้างรายการจาก package.json คำสั่งตามที่แนะนำโดยการตรวจสอบไอออนิกฉันคิดว่าหากการถอนการติดตั้งเกิดขึ้นพร้อมกับข้อผิดพลาด package.json จะไม่ได้รับการอัปเดตซึ่งในกรณีนี้คุณมีเพียงตัวเลือกเท่านั้น ในการเปลี่ยน package.json ด้วยตนเองนี่เป็นเรื่องที่น่าเบื่อ แต่เป็นวิธีเดียวที่ฉันเดา

อัปเดต

เมื่อคุณถอนการติดตั้งแพ็กเกจที่มีการพึ่งพาแพ็กเกจอื่นที่ใช้งานอยู่ซึ่งในกรณีนี้การถอนการติดตั้งอาจล้มเหลวด้วยข้อผิดพลาด / คำเตือนวิธีการที่ปลอดภัยคือใช้กราฟการอ้างอิงต่อไปนี้ซึ่งไม่แน่ใจว่ามีเครื่องมือใดเครื่องมือที่มีประโยชน์ภายใต้การดำเนินการดังกล่าว ข้อความค่อนข้างทำให้เข้าใจผิดแม้ว่า "คุณต้องติดตั้งการพึ่งพาเพียร์ .. " ไม่สมเหตุสมผลเลยเมื่อเราถอนการติดตั้งแพ็คเกจ


1
สิ่งนี้ไม่จำเป็น: หากอยู่ในdependenciesรายการมากกว่าที่uninstall --save ควรลบออกไม่ว่าจะมีสิ่งอื่นขึ้นอยู่หรือไม่ก็ตาม NPM ใช้การแบนการอ้างอิงที่ค่อนข้างฉลาดดังนั้นหากคุณมี X ในรายการการอ้างอิง (อย่างชัดเจน) และคุณถอนการติดตั้ง X - บันทึกมันจะถูกลบออก แต่จำไว้ว่ามีรายการพึ่งพาหลายและ--saveไม่ได้เป็นเช่นเดียวกับ--save-dev, หรือ--save-prod --save-optionalใช่ด้วย: หากคุณuninstallนำไปสู่ข้อผิดพลาด NPM จะหยุดที่ข้อผิดพลาดนั้น ไม่พยายามดำเนินการต่อเพราะไม่สามารถรับประกันความถูกต้องได้อีกต่อไป
Mike 'Pomax' Kamermans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.