Nexus Repository Manager 3'ü Depo Olarak Kullanma Serisi 2 — Npm Paketleri

Ahmet Cokgungordu
3 min readJul 1, 2019

--

Npm install bazen çok uzun sürebilir. Bu yüzden kendi ağınızda bir proxy deponuzun olması iyi olabilir. Ayrıca private depo için yüksek fiyat ödememek için de bu yazıdan yararlanabilirsiniz.

Kurulum

Tek bir docker komutu kullanarak Nexus 3'ün nasıl kurulduğunu ve çalıştırdığını görmek için bu serinin ilk bölümü olan Nexus Repository Manager 3'ü Depo Olarak Kullanma Serisi 1 — Kurulum ve Maven Artifacts yazısını inceleyin.

Nexus’u Docker Deposu Olarak Yapılandırma

Yapılacaklar kısaca şu şekilde;

  • Kendi oluşturduğumuz paketler için private(hosted) bir depo yaratacağız,
  • Resmi depoya erişim sağlayan bir proxy depo yaratacağız,
  • Bu depoların tümünü tek bir URL altında sağlamak için bir grup deposu oluşturacağız.

Oluşturmak istediğiniz her yeni depo için yeni bir blob store açmak önerilmektedir. Bu şekilde, her depo için veriler ‘/nexus-data’(Docker container içinde)da farklı bir klasörde olacaktır.

Bütün repository’ler için önce blob oluşturup sonra repository’lerini yaratacağız. Örnek olması açısından ilkinin tanımını yapalım.

İlk yaratağımız Private depomuz için örnek blob tanımı aşağıdaki gibidir.

Private Repo

Ekibinizin oluşturduğu Docker Image’leri için kulanılacak depodur.

Yeni bir npm(hosted) deposu oluşturun ve aşağıdaki gibi yapılandırın:

Yukarıdaki “Allow redeploy” deployment kuralı size uygun görünmüyor ise “Disable redeploy” olarak ta ayarlamak isteyebilirsiniz. “Allow redeploy” kullanmamın nedeni Nexus’ta latest sürümleri sakladığımızdan, her zaman master branchin statusü ile güncellenir ve CI akışında redeploy olur.

Proxy Repo

Resmi depodan indirdiğiniz her şeyi proxy olarak sunan bir depodur. Aynı bağımlılığı bir daha indirmek istediğinizde Nexus’ta önbellekten verilir.

Yeni bir npm(proxy) deposu oluşturun ve aşağıdaki gibi yapılandırın:

Group Repo

Bu depo, yukarıdaki tüm depoları gruplandırmamız içindir. Bu sayede client’larda indirme/deploy yapılabilmesi için tek bir URL sağlanacaktır.

Yeni bir npm(group) deposu oluşturun ve aşağıdaki gibi yapılandırın:

İhtiyacınız kadar depo oluşturabilir (diğer public depolara proxy’ler gibi) ve hepsini grup deposu altında toplayabilirsiniz. Ancak npm için 1 proxy ve 1 private depodan fazlasına ihtiyacınız olacağını sanmıyorum.

İstemciyi ve Projeyi Nexus Deposunu Kullanacak Şekilde Yapılandırma

Npm için her proje için depo yapılandırılması yapmak gerekiyor(Maven’in aksine, bazı global yapılandırmaları var). Kimlik doğrulamayı makinenizde npm addUser ile genel olarak yapılandırabilirsiniz, ancak basit olması için bu yoldan gitmedim.

Bağımlılıkları yalnızca Nexus’tan indirmek istediğiniz bir projeniz varsa, Projenizin kök dizininde bir .npmrc dosyası oluşturun:

registry=http://your-host:8081/repository/npm-group/_auth=YWRtaW46YWRtaW4xMjM=

_auth=YWRtaW46YWRtaW4xMjM= kimlik bilgileri için base64 hash değeridir(admin/admin123). Farklı bir kimlik bilgisi kullanıyorsanız, kendi hash değerinizi şununla oluşturmalısınız:

echo -n 'myuser:mypassword' | openssl base64

Bir kullanıcı ayarlamanız gerekir, böylece paketleri yayınlayabilirsiniz. Bunu yerel makinenizden yaparsanız, npm yayınlama, ~/.npmrc ile yapılandırılmış kullanıcınızı kullanır. Bu yapılandırmaya sahip değilseniz veya CI’den yayın yapmak istiyorsanız Projenizin .npmrc’sinde bir e-mail=any@email.com yapılandırması belirleyebilirsiniz.

Nexus’unuza yayınlamak istediğiniz bir projeniz varsa, bunu package.json içine koyun:

{
...

"publishConfig": {
"registry": "http://your-host:8081/repository/npm-private/"
}
}

Bu kod parçası ile paketi Private depoda yayınladığımızı unutmayın, ancak paketi çekerken Group deponuzu işaret edebilirsiniz. Böylece hem kendi paketleriniz hem de resmi depodaki paketler tek bir URL’den edinilebilir.

Artık projenizi npm install veya npm publish ile deneyip Nexus’a gidip gitmediğini loglardan görebilirsiniz.

--

--