Npm ดูเหมือนเป็นแพลตฟอร์มที่ยอดเยี่ยมสำหรับใช้ภายในองค์กรอยากรู้ว่า repo ส่วนตัวเป็นไปได้เช่นเดียวกับ Nexus / Maven ไม่มีอะไรเกิดขึ้นใน Google :(
Npm ดูเหมือนเป็นแพลตฟอร์มที่ยอดเยี่ยมสำหรับใช้ภายในองค์กรอยากรู้ว่า repo ส่วนตัวเป็นไปได้เช่นเดียวกับ Nexus / Maven ไม่มีอะไรเกิดขึ้นใน Google :(
คำตอบ:
ฉันไม่คิดว่าจะมีวิธีง่ายๆในการทำเช่นนี้
ดูที่เอกสาร NPMบอกเราว่ามันเป็นไปได้ที่:
ฉันสามารถรันรีจิสตรีส่วนตัวของฉันเองได้หรือไม่?
ใช่
วิธีที่ง่ายที่สุดคือการทำซ้ำฐานข้อมูลที่นอนและใช้เอกสารการออกแบบเดียวกัน (หรือคล้ายกัน) เพื่อใช้ API
หากคุณตั้งค่าการจำลองแบบต่อเนื่องจาก CouchDB อย่างเป็นทางการจากนั้นตั้งค่า CouchDB ภายในของคุณเป็นการกำหนดค่ารีจิสทรีคุณจะสามารถอ่านแพ็คเกจที่เผยแพร่นอกเหนือไปจากชุดส่วนตัวของคุณและโดยค่าเริ่มต้นจะเผยแพร่ภายในเท่านั้น หากคุณต้องการเผยแพร่แพคเกจเพื่อให้คนทั้งโลกได้เห็นคุณสามารถแทนที่การกำหนดค่า
--registry
สำหรับคำสั่งนั้นได้
นอกจากนี้ยังมีบทช่วยสอนที่ยอดเยี่ยมเกี่ยวกับวิธีสร้างที่เก็บส่วนตัว npmในบล็อกนาฬิกา
แก้ไข (2017-02-26):
ไม่ใหม่จริง ๆ แต่ตอนนี้มีแผนจ่ายให้โฮสต์แพ็คเกจส่วนตัวบน NPM
ในช่วงหลายปีที่ผ่านมา NPM ได้กลายเป็นปัจจัยสำหรับ บริษัท ที่ไม่ใช่ Node.js เช่นกันผ่านระบบนิเวศส่วนหน้าขนาดใหญ่ที่สร้างขึ้นบน NPM หาก บริษัท ของคุณกำลังรันSonatype Nexusสำหรับโฮสต์โครงการ Java ภายในคุณยังสามารถใช้สำหรับโฮสต์แพคเกจ NPM ภายในได้
ตัวเลือกอื่น ๆ ได้แก่JFrog ArtifactoryและInedo ProGetแต่ฉันไม่ได้ใช้สิ่งเหล่านั้น
https://github.com/isaacs/npmjs.org/ : ใน npm เวอร์ชั่น v1.0.26 คุณสามารถระบุที่เก็บ git ส่วนตัว url เป็นการอ้างอิงในไฟล์ package.json ของคุณ ฉันไม่ได้ใช้ แต่ต้องการความคิดเห็น นี่คือสิ่งที่คุณต้องทำ:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
}
}
โพสต์ต่อไปนี้พูดคุยเกี่ยวกับเรื่องนี้: Debuggable: โมดูลส่วนตัว npm
มีแพคเกจ npm ที่ใช้งานง่ายเพื่อทำสิ่งนี้ https://www.npmjs.org/package/sinopia
สรุป Sinopia เป็นเซิร์ฟเวอร์ที่เก็บส่วนตัว / แคช npm ที่คุณสามารถตั้งค่าด้วยการกำหนดค่าเป็นศูนย์
Sinopia สามารถใช้เพื่อ:
Verdaccioเป็นสิ่งที่ฉันกำลังมองหาและมันสมควรได้รับคำตอบของตัวเอง;) มันเป็นทางแยกของ Sinopia (คำตอบที่ได้รับการตอบกลับอย่างสูง) มันเป็นรีจิสทรี npm เป็นแพคเกจ npmและสามารถพบได้
ที่นี่: https://github.com/verdaccio/verdaccio ,
ที่นี่: https://www.verdaccio.org ,
ที่นี่: pnpm i -g verdaccio
หรือ
ที่นี่:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
ในวันที่ 14 เมษายน (2015) มีการแนะนำโมดูลส่วนตัว npm
เมื่อคุณชำระเงินสำหรับโมดูลส่วนตัวคุณสามารถ:
- โฮสต์แพ็คเกจส่วนตัวมากเท่าที่คุณต้องการ
- ให้สิทธิ์การเข้าถึงเพื่ออ่านหรืออ่าน - เขียนสำหรับแพ็คเกจเหล่านั้นแก่ผู้ใช้ที่ชำระเงินรายอื่น
- ติดตั้งและใช้แพคเกจใด ๆ ที่ผู้ใช้รายอื่นได้ให้สิทธิ์แก่คุณในการอ่าน
- ทำงานร่วมกันในแพ็คเกจใด ๆ ที่ผู้ใช้ที่ชำระเงินรายอื่นได้ให้สิทธิ์การเขียนแก่คุณ
แน่นอนมันไม่ฟรี - ปัจจุบัน 7 $ ต่อเดือนต่อผู้ใช้
และยังคงเป็นบริการใหม่ที่น่ารัก ตัวอย่างเช่นการสนับสนุนบัญชีองค์กรหายไป (ณ เดือนมิถุนายน 2558):
ปัจจุบันแพ็คเกจส่วนตัวมีให้บริการสำหรับผู้ใช้รายบุคคลเท่านั้น แต่การสนับสนุนบัญชีองค์กรกำลังจะมาเร็ว ๆ นี้ อย่าลังเลที่จะสร้างผู้ใช้สำหรับองค์กรของคุณในระหว่างนี้และเราสามารถอัปเกรดเป็นองค์กรเมื่อการสนับสนุนอยู่ที่นี่
ดังนั้นแม้ว่าจะไม่สมบูรณ์แบบมันเป็นคำตอบที่เป็นทางการสำหรับการดูแลแพคเกจส่วนตัว
UPDATE
แพคเกจส่วนตัว Npmพร้อมใช้งานแล้วพร้อมแผนสำหรับผู้ใช้รายบุคคลและองค์กร :
- ไม่ จำกัด จำนวนแพ็คเกจสาธารณะและส่วนตัว
- $ 7 / เดือน / พัฒนา
- รวมชื่อขอบเขตหนึ่งชื่อตามชื่อองค์กร
- เผยแพร่และควบคุมการเข้าถึง @ org-name / foo
(ข้อจำกัดความรับผิดชอบ: ไม่ได้มีส่วนเกี่ยวข้องในระยะไกลด้วยวิธีใด ๆ กับnpm, Inc. )
ฉันเดาว่ากระทู้นี้ต้องมีการอัพเดท ถ้าคุณดูการลงทะเบียน npm ใด ๆ ที่มีอยู่พวกเขาจะหนักมากและพวกเขาต้องการ couchdb Gemfurry และคนอื่น ๆ ต้องการให้คุณแยกจาก repos สาธารณะ บางส่วนของเงา -npm เหมือน npm ไม่มีข้อผูกพันล่าสุดไม่มีกระทำที่ผ่านมา
จากนั้นเราจะพบเรกกี มันมีดีกระทำกิจกรรมอย่างยิ่งง่ายต่อการติดตั้งและการใช้งานและมีที่ดีงามการสนับสนุนจากชุมชน มันมีน้ำหนักเบามากและคุณไม่ต้องจัดการกับ couchdb ฯลฯ
ยกโทษให้ฉันถ้าฉันไม่เข้าใจคำถามของคุณดี แต่นี่คือคำตอบของฉัน:
คุณสามารถสร้างโมดูล npm ส่วนตัวและใช้คำสั่งปกติของ npm เพื่อติดตั้ง ผู้ใช้ node.js ส่วนใหญ่ใช้ git เป็นที่เก็บของพวกเขา แต่คุณสามารถใช้ที่เก็บอะไรก็ได้ที่เหมาะกับคุณ
เมื่อทำแพคเกจของคุณแล้วใช้
npm ติดตั้ง * tarball_url *
เรากำลังใช้ Sonatype Nexus เวอร์ชันคือ Nexus Repository ManagerOSS 3.6.1-02 และฉันแน่ใจว่ามันรองรับคลังเก็บส่วนตัวของ NPM และแคชแพ็กเกจ
สายไปงานเลี้ยงเล็ก ๆ น้อย ๆ แต่ NodeJS (ตั้งแต่ ~ 14 พ.ย. ฉันเดา) สนับสนุนการเก็บข้อมูล NPM ขององค์กร - คุณสามารถหาข้อมูลเพิ่มเติมได้จากเว็บไซต์ทางการของพวกเขาเว็บไซต์อย่างเป็นทางการ
จากภาพรวมคร่าวๆมันจะปรากฏว่า npmE อนุญาตให้มิร์เรอร์การทำมิเรอร์ของที่เก็บ NPM - นั่นคือมันจะค้นหาแพ็กเกจในที่เก็บ NPM จริงถ้าไม่พบหนึ่งในภายในของคุณ ดูเหมือนว่ามีประโยชน์มาก!
เอ็นพีพีเอ็นเตอร์ไพรส์เป็นโซลูชั่นในสถานที่สำหรับการแบ่งปันและแจกจ่ายโมดูล JavaScript ภายในองค์กรของคุณอย่างปลอดภัยจากทีมงานที่ดูแล npm และรีจิสตรี npm สาธารณะ มันออกแบบมาสำหรับทีมที่ต้องการ:
การใช้งานร่วมกันภายในของโมดูลส่วนตัวได้ง่ายขึ้นการควบคุมการพัฒนาและการปรับใช้เวิร์กโฟลว์ความปลอดภัยที่เข้มงวดยิ่งขึ้นเกี่ยวกับการปรับใช้โมดูลโอเพ่นซอร์สที่สอดคล้องกับข้อกำหนดทางกฎหมายเพื่อให้รหัสโฮสต์ในสถานที่ npmE เป็นส่วนตัว npm
npmE เป็นรีจิสตรี npm ที่ทำงานกับไคลเอนต์ npm มาตรฐานเดียวกับที่คุณใช้อยู่ แต่ให้คุณสมบัติที่จำเป็นสำหรับองค์กรขนาดใหญ่ซึ่งตอนนี้ใช้โหนดอย่างกระตือรือร้น มันถูกสร้างโดย npm, Inc. ผู้สนับสนุนโครงการโอเพ่นซอร์ส npm และโฮสต์ของการลงทะเบียน npm สาธารณะ
น่าเสียดายที่มันไม่ฟรี คุณสามารถทดลองใช้ได้ แต่เป็นซอฟต์แวร์เชิงพาณิชย์ นี่ไม่ใช่บิตที่ยอดเยี่ยมสำหรับนักพัฒนาเดี่ยว แต่ถ้าคุณเป็นนักพัฒนาเดี่ยวคุณมี GitHub :-)
โพสต์นี้พูดถึงเกี่ยวกับวิธีตั้งค่ารีจิสทรีส่วนตัว
การจำลอง npmjs.org ใช้คำสั่งต่อไปนี้
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"
หมายเหตุมี "continuous":true
ในคำสั่งสิ่งนี้ใช้ _changes API ของ CouchDB และจะดึงการเปลี่ยนแปลงใหม่ ๆ เมื่อ API นี้ได้รับแจ้ง
"cancel":true
ถ้าคุณเคยต้องการที่จะหยุดซ้ำเหล่านี้คุณสามารถเพิ่ม จากนั้นสคริปต์ก็จะเป็น
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"
จากนั้นไปที่npmjs.org readmeเพื่อติดตั้ง npm (ตรวจสอบให้แน่ใจnodejs
และgit
ติดตั้งแล้ว) การเป่าเป็นขั้นตอนทั้งหมด
git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp
npm install couchapp
npm install semver
couchapp push registry/app.js http://localhost:5984/registry
couchapp push www/app.js http://localhost:5984/registry
ฉันอาจจะสายไปงานเลี้ยงเล็กน้อย แต่สองอย่างใดอย่างหนึ่งเหล่านี้อาจใช้ได้สำหรับคุณ:
คุณสามารถใช้ Aragon Package Manager ได้หากคุณต้องการวิธีการกระจายอำนาจ: