เนื่องจากใช้เวลาเพียงไม่กี่ปีและดูเหมือนเป็นไปไม่ได้ที่จะทำเช่นนี้ (ใช้ NPM คนเดียว) วิธีแก้ปัญหานี้คือการใช้Nexus Repository Manager (จาก Sonatype) Nexus รองรับที่เก็บข้อมูลหลายแห่งช่วยให้คุณสามารถสั่งซื้อและยังมีพร็อกซี / แคชเพื่อปรับปรุงความเร็ว
มีรุ่นฟรีและรุ่น pro / Paid คุณลักษณะที่รองรับสิ่งนี้มีการอธิบายไว้ที่:
https://help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries
ข้อมูลที่เกี่ยวข้องซ้ำซ้อนด้านล่างดังนั้นหาก / เมื่อ URL / ลิงค์ด้านบนหยุดทำงานข้อมูลยังอยู่ที่นี่
กลุ่มที่เก็บเป็นวิธีที่แนะนำในการแสดงที่เก็บข้อมูลการลงทะเบียน npm ทั้งหมดของคุณจากตัวจัดการที่เก็บไปยังผู้ใช้ของคุณโดยไม่จำเป็นต้องกำหนดค่าฝั่งไคลเอ็นต์เพิ่มเติม กลุ่มที่เก็บช่วยให้คุณเปิดเผยเนื้อหาที่รวมของหลายพร็อกซีและที่เก็บที่โฮสต์กับหนึ่ง URL ถึง npm และเครื่องมืออื่น ๆ
มันช่วยให้คุณสร้างการลงทะเบียน NPM ส่วนตัว
สามารถใช้รีจิสตรี npm ส่วนตัวเพื่ออัพโหลดแพ็คเกจของคุณเองรวมถึงแพ็คเกจของบุคคลที่สาม
และ
เพื่อลดการดาวน์โหลดที่ซ้ำกันและเพิ่มความเร็วในการดาวน์โหลดสำหรับนักพัฒนาและเซิร์ฟเวอร์ CI ของคุณคุณพร็อกซี่รีจิสทรีควรเจ้าภาพที่https://registry.npmjs.org โดยค่าเริ่มต้น npm เข้าถึงรีจิสทรีนี้โดยตรง คุณสามารถพร็อกซีการลงทะเบียนอื่น ๆ ที่คุณต้องการ
ดังนั้นรายการสิ่งที่คุณทำเพื่อให้ได้ผลคือ:
ติดตั้ง Nexus
สร้าง repo ในพื้นที่ / ส่วนตัว (หรือชี้ไปที่ repo ส่วนตัวของคุณบนเซิร์ฟเวอร์อื่น)
สร้างกลุ่มที่แสดงรายการซื้อคืนส่วนตัวของคุณและซื้อคืนสาธารณะ
กำหนดค่าไฟล์ $ HOME / .npmrc ของคุณให้ชี้ไปที่ "GROUP" ที่เพิ่งสร้างขึ้น
เผยแพร่แพคเกจ NPM ส่วนตัวของคุณไปยัง repo ท้องถิ่น
ขณะนี้ผู้ใช้สามารถเรียกใช้การตั้งค่าครั้งเดียว
npm config set registry https://nexus/content/groups/GROUP
- จากนั้นผู้ใช้สามารถติดตั้งแพ็คเกจสาธารณะหรือแพ็คเกจส่วนตัว
npm install
ได้
npm install my-private-package
npm install lodash any-other-public-package
และทั้งแพ็คเกจสาธารณะและแพ็คเกจส่วนตัวของคุณสามารถติดตั้งผ่านnpm install
คำสั่งง่ายๆ Nexus ค้นหาแพ็คเกจที่ค้นหาแต่ละ repo ที่กำหนดค่าในกลุ่มและส่งคืนผลลัพธ์ ดังนั้น npm ยังคงคิดว่ามีเพียงรีจิสตรีเดียว แต่อยู่ด้านหลังม่านมีรีโพสหลายตัวที่ใช้อยู่
หมายเหตุสำคัญ: เมื่อคุณเผยแพร่ส่วนประกอบของคุณคุณจะต้องระบุnpm publish --registry https://nexus/content/repositories/private-repo my-private-package
คำสั่งเพื่อให้แพ็คเกจของคุณถูกเผยแพร่ไปยัง repo ที่ถูกต้อง