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?

ryanve
sumber

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>:[email protected]/<user>/<repo>.git"

atau

ssh: setup ssh dan kemudian gunakan sintaks ini:

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"

(perhatikan penggunaan titik dua bukan garis miring sebelum pengguna)

ryanve
sumber
19
Atau jika Anda telah mengatur ssh di github, lewati token dan gunakan: "<package>": "git+ssh://[email protected]/<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>:[email protected]/<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!

Steve M
sumber
8

Dengan git ada format https

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

Format ini menerima kata sandi Pengguna +

https://bot-user:[email protected]/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:[email protected]/ghuser/name_of_my_lib.git"
  // ...
}

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

setara8
sumber
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