ย้ายโมดูลจาก devDependencies ไปยังการพึ่งพาใน npm package.json


154

มีคำสั่งสั้น ๆ เพื่อย้ายโมดูลจาก devDependenciesไปยังdependenciesใน package.json หรือไม่

ฉันพบว่าตัวเองทำสิ่งนี้อยู่เสมอ:

npm uninstall <module_name> --save-dev 
npm install <module_name> --save

มีวิธีที่สั้นกว่านี้หรือไม่?

คำตอบ:



182

หากคุณต้องการทำสิ่งตรงกันข้าม (เช่นย้ายโมดูลจากdependenciesไปยังdevDependencies) เพียงทำ:

npm install <module_name> --save-dev

หรือจดชวเลข:

npm i <module_name> -D

ชวเลขเพื่อย้ายจากdevDependenciesไปยังdependencies(กระทุ้ง):

npm i <module_name> -P

5
ใช้งานได้สำหรับฉัน v5.6
ตำนาน

1
ชวเลขnpm i module-example -Dยังจะทำงานเพื่อย้ายจากกระทุ้งไปยัง dev เช่นเดียวกับnpm i module-example -Pการย้ายจาก dev ไปยังการพึ่งพากระทุ้ง
Andriy

@ ขอบคุณ Annriy ไม่ได้คิดเกี่ยวกับมัน จะอัปเดตคำตอบ!
Sid

หากคุณใช้ไหมพรมแทนคุณจะต้องลบออกก่อนจากการอ้างอิงด้วยyarn remove <module_name>จากนั้นเพิ่มอีกครั้งใน devDependencies ด้วยyarn add <module_name> --dev
Eugenio

16

ในเส้นด้าย:

ย้ายโมดูลจากdevDependenciesไปที่dependencies:

yarn remove <module_name> --dev && yarn add <module_name> 

ย้ายโมดูลจากdependenciesไปที่devDependencies:

yarn remove <module_name> && yarn add <module_name> --dev

ดังที่ได้กล่าวไว้ในความคิดเห็นคำสั่งจะลบโมดูลและติดตั้งใหม่ในตำแหน่งใหม่


1
ถูกต้องจริงเหรอ? มีวิธีในเส้นด้ายไหมที่จะย้ายสิ่งต่าง ๆ จากdependenciesไปยังdevDependenciesโดยไม่ต้องลบและเพิ่มใหม่?
LondonRob

@ LondonRob เป็นวิธีเดียวที่ฉันได้พบ
yohaiz

21
นี่ไม่ใช่การย้ายนี่เป็นเพียงการลบแพ็คเกจและติดตั้งอีกครั้ง
Thanveer Shah

@seeker_of_bacon ไม่มีอะไรทำงานในพื้นหลังที่นี่ คุณอาจจะทำให้เกิดความสับสนกับ&& &
rudolfbyker

3

หากโครงการของคุณไม่มีไฟล์ lockfile หรือไฟล์ shrinkwrap คุณสามารถย้ายบรรทัดที่เกี่ยวข้องใน package.jsonยังคุณก็สามารถย้ายสายที่สอดคล้องกันในของคุณ

(ฉันไม่แนะนำไม่ใช้ lockfiles)


3

ปัญหาเกี่ยวกับการใช้npmหรือyarnคำสั่งคือมีโอกาสที่รุ่นที่ถูกเพิ่มเข้ามาใหม่จะเป็นรุ่นที่แตกต่างจากรุ่นที่ใช้อยู่ในปัจจุบัน หากนี่คือสิ่งที่คุณต้องการ - ทั้งการย้ายและการอัปเกรด - จากนั้นไปข้างหน้าและใช้คำตอบที่ยอมรับได้

หากไม่มีให้แก้ไขด้วยตนเองpackage.jsonเพื่อย้ายบรรทัดจากdevDependenciesวัตถุไปยังdependenciesวัตถุ (สร้างหากจำเป็น) คุณสามารถไปในทิศทางอื่นได้เช่นกัน

ไฟล์ล็อคไม่ได้เก็บข้อมูลใด ๆ เกี่ยวกับว่าสิ่งใดเป็นสิ่งที่ต้องใช้ในการผลิตหรือการอ้างอิง dev ดังนั้นจึงไม่จำเป็นต้องอัพเดต คุณสามารถทำnpm/ a yarn installภายหลังเพื่อแก้ไขค่าสถานะใด ๆ ในไฟล์ล็อค


ในขณะที่มีเพียงdependenciesส่วนระดับบนสุดเดียวในpackage-lock.jsonแต่ละรายการอาจมีdevธงเพื่อระบุว่ามันคือการพึ่งพา dev หรือการพึ่งพาสกรรมกริยาของหนึ่ง ดูdocs.npmjs.com/files/package-lock.json#dev "ถ้า [dev เป็น] จริงการอ้างอิงนี้เป็นการพึ่งพาการพัฒนาอย่างใดอย่างหนึ่งของโมดูลระดับบนสุดหรือการพึ่งพาสกรรมกริยาของสิ่งนี้เป็นเท็จสำหรับการอ้างอิงที่ เป็นทั้งการพึ่งพาการพัฒนาของระดับสูงสุดและการพึ่งพาสกรรมกริยาของการพึ่งพาที่ไม่ใช่การพัฒนาของระดับบนสุด "
rob3c

0

ปัญหาของการใช้การติดตั้ง npm คือคุณท้ายด้วยรุ่นที่ปรับปรุงแล้ว สิ่งที่ได้ผลสำหรับฉันคือ:

  1. การย้ายไปยังส่วนที่ต้องการ (dev หรือ prod)
  2. การลบออกจากโฟลเดอร์node_modules
  3. ปฏิบัติ npm install

ที่ทำให้ทุกรุ่นยังคงเหมือนเดิม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.