วิธีการใช้ repit Github ส่วนตัวเป็นการพึ่งพา npm


203

ฉันจะแสดง repo ส่วนตัว Github เป็นแบบ"dependency"in ได้package.jsonอย่างไร ฉันลองไวยากรณ์ Github URL ของ npmเหมือนryanve/exampleแต่การทำnpm installในโฟลเดอร์แพ็คเกจให้ข้อผิดพลาด "ไม่สามารถติดตั้ง" สำหรับการอ้างอิงส่วนตัว มีไวยากรณ์พิเศษ (หรือกลไกอื่น ๆ ) เพื่อขึ้นอยู่กับ repos ส่วนตัว?

คำตอบ:


284

สามารถทำได้ผ่านhttps และ oauth หรือ ssh

https และ oauth: สร้างโทเค็นการเข้าถึงที่มีขอบเขต "repo" จากนั้นใช้ไวยากรณ์นี้ :

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

หรือ

ssh: setup sshแล้วใช้ไวยากรณ์นี้:

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

(บันทึกการใช้เครื่องหมายโคลอนแทนเครื่องหมายทับก่อนผู้ใช้)


19
หรือถ้าคุณตั้งค่า ssh ไว้ที่ github ให้ข้ามโทเค็นแล้วใช้: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
คุณมีการเปิดตัวรุ่นล่าสุดได้อย่างไร?
SIr Codealot

25
เพิ่ม #master ถึงที่สุด
Jasmine Hegman

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"ไม่ได้ผลสำหรับฉัน การสลับโทเค็นและ x-oauth-basic น่าประหลาดใจที่ได้ทำงาน ดังนั้น"package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"ทำงานให้ฉัน โปรดทราบว่าฉันใช้ gitlab ไม่ใช่ gitub
misantronic

2
กว่าhttpsการใส่x-oauth-basicชื่อผู้ใช้ไม่จำเป็นต้อง: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"การทำงานเป็นอย่างดี
kadam

25

หากใครบางคนกำลังมองหาตัวเลือกอื่นสำหรับ Git Lab และตัวเลือกด้านบนไม่ทำงานเรามีตัวเลือกอื่น สำหรับการติดตั้งเซิร์ฟเวอร์ Git Lab ในพื้นที่เราพบว่าวิธีการด้านล่างช่วยให้เราสามารถรวมการพึ่งพาแพ็คเกจได้ เราสร้างและใช้โทเค็นการเข้าถึงเพื่อทำเช่นนั้น

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

แน่นอนว่าหากใช้รหัสการเข้าถึงด้วยวิธีนี้ควรมีการอนุญาตแบบ จำกัด

โชคดี!


8

ด้วยคอมไพล์มีรูปแบบ https

https://github.com/equivalent/we_demand_serverless_ruby.git

รูปแบบนี้ยอมรับชื่อผู้ใช้ + รหัสผ่าน

https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git

ดังนั้นสิ่งที่คุณสามารถทำได้คือสร้างผู้ใช้ใหม่ที่จะใช้เหมือนบอทเพิ่มสิทธิ์ที่เพียงพอที่เขาสามารถอ่านที่เก็บข้อมูลที่คุณต้องการโหลดในโมดูล NPM และเพียงแค่มีในของคุณโดยตรง packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

ในส่วนขอบเขตที่เลือกตรวจสอบบนrepo : การควบคุมทั้งหมดของที่เก็บส่วนตัว

นี่คือโทเค็นสามารถเข้าถึง repos ส่วนตัวที่ผู้ใช้สามารถดู

ตอนนี้สร้างกลุ่มใหม่ในองค์กรของคุณเพิ่มผู้ใช้นี้ในกลุ่มและเพิ่มเฉพาะที่เก็บที่คุณคาดว่าจะถูกดึงด้วยวิธีนี้ (อ่านได้รับอนุญาตเท่านั้น!)

คุณต้องแน่ใจว่าจะส่งการกำหนดค่านี้ไปที่ repo ส่วนตัวเท่านั้น

จากนั้นคุณสามารถเพิ่มสิ่งนี้ใน / packages.json ของคุณ (bot-user คือชื่อของผู้ใช้ xxxxxxxxx เป็นโทเค็นส่วนบุคคลที่สร้างขึ้น)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


1
ดังนั้นจะปลอดภัยหรือไม่ที่จะยอมรับโทเค็นการเข้าถึงส่วนบุคคลนี้และใช้ในสิ่งที่ชอบเทรวิส CI?
Con Antonakos

@ConAntonakos หากโครงการเป็นพื้นที่เก็บข้อมูลส่วนตัว Github และคุณได้จ่าย Travis CI ที่ใช้พื้นที่เก็บข้อมูลโครงการ Github ส่วนตัวของคุณแล้วใช่ (เช่นที่คุณไม่ได้แบ่งปันข้อมูลประจำตัวของคุณต่อสาธารณะ) สิ่งที่ต้องจำคือคุณต้องสร้างและใช้ สิทธิของผู้ใช้ Github ใหม่ที่มีสิทธิ์เข้าถึงเพื่ออ่าน repo ส่วนตัวนี้เท่านั้น ดังนั้นอย่าใช้บัญชีส่วนตัวของคุณ :) ... สร้างบัญชีผู้ใช้ bot ที่ง่ายต่อการล็อคในกรณีที่มีการเปิดเผย;) ... หากคุณกำลังสร้างโครงการธนาคารสิ่งนี้จะไม่ผ่านการรับรองมาตรฐาน ISO ดังนั้นจึงไม่มีเลย ปลอดภัยแม้กระทั่งรหัสร้านค้าใน GH
เทียบเท่า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.