ฉันจะเปลี่ยนเส้นทางแคชสำหรับ npm (หรือปิดการใช้งานแคชโดยสมบูรณ์) บน Windows ได้อย่างไร


105

ฉันได้ติดตั้ง Node.js บนเครื่องพัฒนา Windows 7 x64 ของฉันแล้ววิธีการแบบแมนนวล:

mkdir C:\Devel\nodejs
cd C:\Devel\nodejs
set NODE_PATH=%CD%
setx /M PATH "%PATH%;%NODE_PATH%"
setx /M NODE_PATH "%NODE_PATH%\node_modules"

ฉันวางโหนดหลักx64 ไบนารีพร้อมกับตัวจัดการแพ็คเกจ npmในC:\Devel\nodejs. ทำงานได้อย่างมีเสน่ห์และฉันสามารถอัปเดตไบนารีหลักโดยไม่ต้องจัดการกับโปรแกรมติดตั้ง

ปัญหาเดียวที่ฉันแก้ไม่ได้คือย้ายโฟลเดอร์แคช เมื่อฉันติดตั้งแพ็คเกจภายใน:

npm install express

... แคชจะอยู่ใน%APP_DATA%\npm-cacheโฟลเดอร์ ฉันต้องการเปลี่ยนเป็น:

C:\Devel\nodejs\npm-cache

ฉันจะเปลี่ยนโฟลเดอร์แคช npm หรือปิดการใช้งานทั้งหมดได้อย่างไร


1
ตำแหน่งไม่ควรเป็น:% APPDATA% \ npm-cache
arni

คำตอบ:


161

คุณสามารถเปลี่ยนโฟลเดอร์แคช npm โดยใช้npmบรรทัดคำสั่ง (ดู: https://docs.npmjs.com/misc/configและอื่น ๆ โดยเฉพาะhttps://docs.npmjs.com/misc/config#cache )

ดังนั้นคุณอาจต้องการลองใช้คำสั่งนี้:

> npm config set cache C:\Devel\nodejs\npm-cache --global 

3
โปรดทราบว่าหากคุณกำลังจะไปตามเส้นทาง npmrc ไฟล์ npmrc ส่วนกลางไม่ได้อยู่ที่ $ PREFIX โดยตรง แต่อยู่ใน $ PREFIX \ etc
Henry C

3
เมื่อทำสิ่งนี้บน Windows 7 โดยใช้ Cygwin ฉันต้องเพิ่มเครื่องหมายทับข้างหน้าแบ็กสแลชทุกอันเพื่อหลีกเลี่ยงไม่ให้แบ็กสแลชถูกลบออก
ที.เจ.

8
หลังจากดำเนินการให้ทำnpm config listเพื่อตรวจสอบการตั้งค่าที่ถูกต้อง
kampsj

ฉันมีปัญหาคำสั่งการค้นพบว่าคุณกำลังหมายใดในเอกสารเชื่อมโยง
AAA

40

คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้export npm_config_cache=/path/to/cache(Unix) หรือset npm_config_cache=C:\path\to\cache(Win) เป็นอีกทางเลือกหนึ่งได้npm config set(ซึ่งเป็นจริงสำหรับตัวเลือกการกำหนดค่าทั้งหมดใน npm)


สำหรับใครก็ตามที่ใช้นักเทียบท่าคุณสามารถเพิ่ม env var ที่รันไทม์ด้วย:

docker run -e npm_config_cache=/path/to/cache mydockerimage:tag

3
เหมาะสำหรับใช้ในนักเทียบท่า Thx
velop

3

คุณยังสามารถทำสิ่งต่อไปนี้:

สำหรับการมีแคชพา ธ ตามที่คุณต้องการสำหรับแพ็คเกจเดียวในขณะที่ติดตั้ง:

npm install packageName --cache path/to/some/folder

สำหรับการมีแคชพา ธ ตามที่คุณต้องการสำหรับแพ็คเกจทั้งหมดใน package.json:

เพียงแค่อยู่ในไดเร็กทอรีที่ package.json เป็นปกติและทำ

npm install --cache path/to/some/folder

คุณอาจไม่พบสิ่งนี้ในเอกสาร npm แต่ฉันได้ลองใช้กับ npm 6 แล้วและใช้งานได้ ดูเหมือนว่าจะใช้งานได้ตั้งแต่ npm 5 [อ้างอิง: วิธีระบุโฟลเดอร์แคชใน npm5 บนคำสั่ง install?



0

นอกจากนี้ฉันพบว่าการเรียกใช้คำสั่งอัพเดตก็ใช้ได้เช่นกันตัวอย่างเช่น:

npm update npm

สุดท้ายคุณสามารถตรวจสอบไดเรกทอรี npm-cache เพื่อดูว่ามีการเติมหรือไม่

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