ฉันจะถอนการติดตั้งแพ็กเกจที่ติดตั้งโดยใช้ลิงก์ npm ได้อย่างไร


162

เมื่อติดตั้งโหนดแพ็กเกจที่ใช้sudo npm linkในไดเร็กทอรีของแพ็กเกจฉันจะถอนการติดตั้งแพ็กเกจได้อย่างไรเมื่อฉันพัฒนาเสร็จแล้ว?

npm linkติดตั้งแพ็กเกจเป็นลิงก์สัญลักษณ์ในตำแหน่งแพ็กเกจโกลบอลของระบบ ('/ usr / local / lib`) สิ่งนี้ช่วยให้คุณสามารถทดสอบแพ็คเกจในขณะที่ยังคงพัฒนามันได้โดยไม่ต้องติดตั้งซ้ำแล้วซ้ำอีก

ฉันต้องรันคำสั่ง npm ใดเพื่อลบลิงก์อีกครั้ง

คำตอบ:


166

แพคเกจสามารถถอนการติดตั้งโดยใช้คำสั่งถอนการติดตั้งหรือrmเดียวกันที่สามารถใช้สำหรับการลบแพคเกจที่ติดตั้ง สิ่งเดียวที่ต้องจำไว้ก็คือลิงค์จะต้องถอนการติดตั้งทั่วโลก - ต้องมีการตั้ง--globalค่าสถานะ

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

sudo npm rm --global foo

นี่จะถอนการติดตั้งแพ็คเกจ

ในการตรวจสอบว่ามีการติดตั้งแพ็คเกจหรือไม่npm lsสามารถใช้คำสั่งได้:

npm ls --global foo

5
หากคุณไม่แน่ใจว่าชื่อของแพ็คเกจที่เชื่อมโยงคุณสามารถทำได้npm ls --global --depth 0เพื่อแสดงรายการการพึ่งพาระดับสูงสุดทั้งหมดของคุณ
schu34

1
sudoเรื่องนี้ไม่ได้ทำงานสำหรับฉันเพราะปัญหาเกี่ยวกับสิทธิ์แม้จะมี ฉันสร้างไดเรกทอรีที่ขาดหายไปด้วยดัมpackage.jsonมีกับnameและversionฟิลด์ ( nameควรตรงกับชื่อแพ็กเกจversionสามารถเป็นอะไรก็ได้) ภายในโฟลเดอร์นั้นฉันวิ่งnpm link && npm unlinkและใช้งานได้
silvenon

npm uninstallจากโฟลเดอร์ไลบรารีในเครื่องจะทำงานเช่นกัน
backslashN

132

คุณสามารถใช้unlinkเพื่อลบ symlink

ตัวอย่างเช่น:

cd ~/projects/node-redis 
npm link                 
cd ~/projects/node-bloggy
npm link redis             # links to your local redis

หากต้องการติดตั้งใหม่จาก package.json ของคุณ:

npm unlink redis
npm install

https://www.tachyonstemplates.com/npm-cheat-sheet/#unlinking-a-npm-package-from-an-application


4
ไม่ได้เป็นunlinkเช่นเดียวกับrmสำหรับnpm? พวกเขาแบ่งปันหน้าคนเดียวกัน (กับuninstall)
nwinkler

1
@nwinkler คุณสามารถแชร์ลิงก์ได้หรือไม่
Blair Anderson

12
ซอร์สโค้ด npm ใช้ rm, unlink, remove, r และ un as aliases สำหรับการถอนการติดตั้ง: github.com/npm/npm/blob/ ...... - ดูบรรทัด 66ff
nwinkler

ลิงก์ที่ด้านล่างของคำตอบนี้ตายสำหรับฉัน
Liron Yahdav

ยังไม่ได้npm iลบลิงก์ทั้งหมดใช่ไหม
Toivo Säwén

19

ความเจ็บปวดลิงค์ NPM:

-Module ชื่ออึกงาน

- โครงการชื่อโครงการ -x


คุณต้องการลิงค์อึกงาน :

1: ไปที่ไดเรกทอรีอึกงานแล้วทำเช่นnpm linkนี้จะเชื่อมโยงโครงการไปยังโมดูลทั่วโลกของคุณ

2: ไปที่โปรเจ็กต์project-xจากนั้นnpm installตรวจสอบให้แน่ใจว่าลบไดเร็กทอรี node_modules ปัจจุบัน


ตอนนี้คุณต้องการลบความบ้าคลั่งนี้และใช้งานอึกจริงเรามีสองตัวเลือก:

ตัวเลือกที่ 1: ยกเลิกการเชื่อมโยงผ่าน npm:

1: ไปที่โครงการของคุณและทำเช่นnpm unlink gulp-taskนี้จะลบโมดูลที่ติดตั้งที่เชื่อมโยง

2: ไปที่ไดเร็กทอรีgulp-taskและทำnpm unlinkเพื่อลบ symlink สังเกตว่าเราไม่ได้ใช้ชื่อของโมดูล

3: เฉลิมฉลอง


จะเกิดอะไรขึ้นถ้าสิ่งนี้ใช้ไม่ได้ให้ตรวจสอบด้วยการหาโมดูลที่ติดตั้งทั่วโลกของคุณ My are location ls -la /usr/local/lib/node_modules/ถ้าคุณใช้nvmมันจะเป็นเส้นทางที่แตกต่าง


ตัวเลือกที่ 2: ลบ symlink เหมือนกับ linux guru ปกติ

1: ค้นหาการอ้างอิงทั่วโลกของคุณ cd /usr/local/lib/node_modules/

2: การลบ symlink เพียงแค่ใช้rmคำสั่ง

rm gulp-task ทำให้แน่ใจว่าคุณไม่มี/ที่สิ้นสุด

rm gulp-task/ ผิด wrong

rm gulp-task ✔️


ทำธรรมดาnpm-unlinkลบแพคเกจทั้งหมดในโครงการของฉัน
cst1992

2

ถ้าคุณได้ทำสิ่งที่ชอบบังเอิญnpm linkกำเนิด webapp หลังจากที่คุณได้เปลี่ยนแปลงนั้นคุณสามารถแก้ไขได้โดยการโคลนเครื่องกำเนิดไฟฟ้าที่เหมาะสมและการเชื่อมโยงว่า

git clone https://github.com/yeoman/generator-webapp.git;
# for fixing generator-webapp, replace with your required repository
cd generator-webapp;
npm link;

0

"npm install" แทนที่การอ้างอิงทั้งหมดใน node_modules ของคุณที่ติดตั้งด้วย "npm link" ด้วยรุ่นจาก npmjs (ที่ระบุใน package.json ของคุณ)

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