Kami menggunakan GitLab untuk proyek pribadi kami. Ada beberapa pustaka bercabang dari github, yang ingin kami instal sebagai modul npm. Menginstal modul itu langsung dari npm tidak apa-apa dan sebagai contoh ini:
npm install git://github.com/FredyC/grunt-stylus-sprite.git
... berfungsi dengan benar juga, tetapi melakukan hal yang sama untuk GitLab, hanya mengubah domain membuat saya mengalami kesalahan ini.
npm WARN `git config --get remote.origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-sprite.git)
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git Cloning into bare repository 'D:\users\Fredy\AppData\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-sprite-git-6f33bc59'...
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git fatal:unable to connect to git.domain.com:
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git git.domain.com[0: 77.93.195.214]: errno=No error
npm ERR! Error: Command failed: Cloning into bare repository 'D:\users\Fredy\App
Data\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-spr
ite-git-6f33bc59'...
npm ERR! fatal: unable to connect to git.domain.com:
npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error
Dari antarmuka web GitLab, saya memiliki URL ini
[email protected]:library/grunt-stylus-sprite.git
. Menjalankan ini untuk npm install
mencoba menginstal git
modul dari registri npm.
Namun menggunakan URL: [email protected]:library/grunt-stylus-sprite.git
tiba-tiba meminta saya untuk memasukkan kata sandi. Kunci SSH saya tidak menyertakan frasa sandi, jadi saya anggap kunci itu tidak dapat dimuat. Mungkin ada beberapa konfigurasi yang saya lewatkan? Kunci terletak di lokasi standar di direktori home saya dengan nama "id_rsa"
.
Saya menggunakan Windows 7 x64.
MEMPERBARUI
Sejak NPM v3 ada dukungan bawaan untuk GitLab dan sumber lain (BitBucket, Gist), dari mana Anda dapat menginstal paket. Sayangnya ini hanya berfungsi untuk yang publik jadi tidak sepenuhnya terkait dengan ini, tetapi beberapa mungkin merasa berguna.
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
Lihat dokumentasi: https://docs.npmjs.com/cli/install
<placeholders>
saya mencoba beberapa variasi dan masih mengatakan proyek tidak ditemukan.$ npm i -S git+ssh://[email protected]/org/repo.git
tidak bekerjaJawaban:
Anda memiliki metode berikut untuk menghubungkan ke repositori gitlab pribadi
Dengan SSH
Dengan HTTPS
Dengan HTTPS dan terapkan token
sumber
Repository#1.2.3
. Saya akan mengubah centang jawaban karena ini lebih akurat.git+ssh://[email protected]/Username/Repository
(perhatikan / pisahkan host dan nama pengguna). Ini mungkin hal khusus benang, mungkin contoh yang disarankan berfungsi dengan npm<token-name>
dalam contoh terlihatgitlab+deploy-token-17034
, ini bukan nama arbitrer yang Anda tetapkan ke token.Alih-alih
git://
, gunakangit+ssh://
dan npm harus melakukan hal yang benar.sumber
undefined ls-remote <url>
Memperbarui
Seperti yang disebutkan @felix dalam komentar (terima kasih @felix), penggunaan
deploy token
jauh lebih relevan untuk membaca registri pribadi digitlab
. Dengan cara ini token dikompromikan, penyerang hanya dapat membaca repositori itu dan tidak dapat membuat perubahan.Membuat Deploy Token
GitLab
akun Anda .Expand
bagian Deploy Tokens.read_repository
Jawaban lama
Goto
User Settings > Access Tokens
dan buat yang baruaccess token
denganread_registry
izin.Salinan dibuat
token
, kami membutuhkannya untukpackage.json
file kami .Sekarang
package.json
tambahkandependency
seperti di bawah ini:Ganti
Xaqron
dengan nama pengguna Anda dantoken
dengan token yang dibuat. Anda dapat menentukanbranch
dantag
di akhir url dengan#{branch|tag}
.Catatan: Karena token akses terletak di
package.json
siapa pun yang memiliki akses ke proyek ini dapat membaca repositori, jadi saya menganggap proyek Anda bersifat pribadi.sumber
"private-module": "git+https://gitlab+deploy-token-username:[email protected]/you/project",
npm ERR! enoent undefined ls-remote -h -t https://puump:[email protected]/puump/puump-content.git
git
lihat"private-module": "git+https://gitlab+deploy-token-username:[email protected]/group_name/project"
your username
group_name
Meskipun pertanyaannya tentang Gitlab, pertanyaan ini memiliki peringkat yang cukup baik di pencarian google, jadi berikut adalah beberapa informasi lebih lanjut tentang cara memperbaiki masalah serupa yang saya dapatkan dengan Github.
Bagi saya, hanya mengubah url saja tidak berhasil. Berikut langkah-langkah yang harus saya ambil untuk memperbaikinya:
git+ssh://[email protected]:owner/repo.git#master
~/.ssh/config
buat file jika tidak ada) untuk memaksa penggunaan DeployKey alih-alih kunci ssh defaultSetelah itu npm install langsung bekerja. Semua opsi dan solusi lain mengakibatkan kerusakan instalasi npm
sumber
:owner
?~/.ssh/config
? Saya masih belum selesai dengan npm / gitlabHanya untuk orang lain yang menemukan ini, saya tidak bisa membuatnya bekerja melalui HTTPS sama sekali - tampaknya itu tidak mendukung tautan langsung ke repo (misalnya
https://git.domain.com/user/somerepo.git
), juga tidak mendukung.tar
,.tar.bz
atau.zip
versi arsip.Tampaknya hanya berfungsi dengan
.tar.gz
arsip.Contoh lengkap (dengan versi yang diberi tag):
https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3
sumber
Tidak ada jawaban lain yang berhasil untuk saya untuk repo gitlab.com pribadi ...
Namun ini berfungsi:
npm i -S git+ssh://[email protected]:<org>/<project>.git
Ini hanya git ssh clone url dari kolom input "clone" halaman proyek dengan
git+ssh://
ditambahkan ke depannya.sumber
Sejauh yang saya tahu di mana Anda salah adalah
git://
protokolnya. GitLab hanya mendukung HTTP (s) dan SSH untuk klon. Jadi, Anda harus menggunakan salah satu metode tersebut, bukan protokol git.sumber
Bagi saya, atur package.json seperti di bawah ini.
Token ini didapat dari "Pengaturan Profil - Token Akses" Anda.
sumber
Jika Anda ingin menggunakan variabel lingkungan yang memegang token alih-alih token yang di-hardcode di URL, saya datang dengan solusi yang bahkan cukup rumit. Kami akan menggunakan
GIT_ASKPASS
variabel lingkungan untuk mendapatkan kata sandi dari skrip bash, skrip ini akan menggemakan variabel lingkungan. Untuk mengatasi npm hanya melewatkan variabel lingkungan GIT tertentu yang akan kita gunakanGIT_SSH
sebagai perantara.Jadi, diberikan
git_pass_env.sh
berisiecho $GIT_SSH
kita bisa memanggil:Untuk contoh proyek dengan buruh pelabuhan dan buruh pelabuhan-menulis lihat repo saya di sini .
Diagram alir variabel lingkungan:
sumber
Gitlab sekarang memiliki registri paket yang memungkinkan untuk membangun, menerapkan, dan menghosting paket npm. Dengan repositori pribadi, dimungkinkan untuk memberikan kontrol akses yang halus atas konten repositori dan paket.
Paket NPM dapat diinstal dari repositori Gitlab pribadi dengan menambahkan
.npmrc
file bersamapackage.json
. Info selengkapnya di sini . Meskipun menjadi rumit saat menggunakan beberapa token penerapan untuk repositori yang berbeda dalam basis kode yang sama.Dengan Gitlab, Anda dapat mengakses
.tgz
file paket secara langsung dengan HTTPS dan menerapkan token . Cukup tambahkan ketergantungan proyek seperti ini:@ foo / bar ada dua kali di URL. @foo adalah cakupan proyek dan bar adalah nama modul dan 1.0.0 adalah nama modul. project-id (8 digit numerik) adalah project ID Gitlab, yang bisa dilihat dari halaman project di bawah namanya. Bahkan mungkin untuk menghilangkan @foo dari nama modul (tapi bukan tautannya).
Menggunakan beberapa modul dengan cakupan yang sama dan token penerapan yang berbeda membuat pengelolaan repositori pribadi menjadi aman. Juga Deploy token mungkin hanya memiliki akses
package registry
yang artinya, pengguna akhir tidak akan dapat mengakses kode sumber lengkap dari repositori.sumber