Cara menggunakan repo Github pribadi sebagai dependensi npm


203

Bagaimana cara mendaftar repo Github pribadi sebagai "dependency"di package.json? Saya mencoba sintaks URL Github npm seperti ryanve/example, tetapi melakukan npm installdalam folder paket memberikan kesalahan "tidak dapat menginstal" untuk dependensi pribadi. Apakah ada sintaks khusus (atau mekanisme lain) untuk bergantung pada repo pribadi?

Jawaban:


284

Ini dapat dilakukan melalui https dan oauth atau ssh.

https dan oauth: buat token akses yang memiliki cakupan "repo" dan kemudian gunakan sintaks ini :

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

atau

ssh: setup ssh dan kemudian gunakan sintaks ini:

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

(perhatikan penggunaan titik dua bukan garis miring sebelum pengguna)


19
Atau jika Anda telah mengatur ssh di github, lewati token dan gunakan: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
Bagaimana Anda selalu memilikinya pada rilis terbaru?
SI Codealot

25
Tambahkan #master sampai akhir
Jasmine Hegman

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"tidak bekerja untuk saya. Mengejutkan token dan x-oauth-basic melakukan pekerjaan. Jadi, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"bekerja untuk saya. harap dicatat bahwa saya menggunakan gitlab dan bukan github.
misantronic

2
Lebih dari httpsmenempatkan x-oauth-basicsebagai nama pengguna tidak perlu: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"berfungsi juga.
kadam

25

Jika seseorang mencari opsi lain untuk Git Lab dan opsi di atas tidak berfungsi, maka kami memiliki pilihan lain. Untuk instalasi lokal server Git Lab, kami telah menemukan bahwa pendekatan di bawah ini memungkinkan kami untuk menyertakan ketergantungan paket. Kami membuat dan menggunakan token akses untuk melakukannya.

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

Tentu saja, jika seseorang menggunakan kunci akses dengan cara ini, itu harus memiliki seperangkat izin terbatas.

Semoga berhasil!


8

Dengan git ada format https

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

Format ini menerima kata sandi Pengguna +

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

Jadi yang dapat Anda lakukan adalah membuat pengguna baru yang akan digunakan hanya sebagai bot , tambahkan cukup izin sehingga ia bisa membaca repositori yang ingin Anda muat dalam modul NPM dan langsung saja memilikinya di packages.json

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

Di bagian Select Scopes, periksa pada repo : Kontrol penuh dari repositori pribadi

Ini agar token dapat mengakses repo pribadi yang dapat dilihat pengguna

Sekarang buat grup baru di organisasi Anda, tambahkan pengguna ini ke grup dan tambahkan hanya repositori yang Anda harapkan akan ditarik dengan cara ini (BACA HANYA izin!)

Anda harus memastikan untuk mendorong konfigurasi ini hanya ke repo pribadi

Kemudian Anda dapat menambahkan ini ke / packages.json Anda (pengguna bot adalah nama pengguna, xxxxxxxxx adalah token pribadi yang dihasilkan)

// 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
Jadi, apakah aman untuk melakukan token akses pribadi ini, dan menggunakannya dalam sesuatu seperti Travis CI?
Con Antonakos

@ConAntonakos jika proyek tersebut adalah repositori pribadi Github dan Anda telah membayar Travis CI yang menjalankan repositori proyek Github pribadi Anda, maka ya (kindof, karena Anda tidak membagikan kredensial Anda secara publik) Hal lain yang perlu diingat adalah Anda perlu membuat dan menggunakan kredensial pengguna Github baru yang hanya memiliki akses baca ke repo pribadi ini. Jadi jangan gunakan akun pribadi Anda :) ... buat akun pengguna bot yang lebih mudah dikunci jika terpapar;) ... Jika Anda sedang membangun proyek bank, ini tidak akan lulus akreditasi ISO, jadi tidak, tidak pernah secure bahkan tidak menyimpan kode pada GH
equivalent8
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.