kuruluşunuzun npm ile kullanması için özel bir depo barındırabilir misiniz?


220

Npm, bir kuruluşta kullanmak için harika bir platform gibi geliyor, Nexus / Maven gibi özel bir repo'nun mümkün olup olmadığını merak ediyor. Google'da hiçbir şey görünmüyor :(


1
Aşağıda oldukça düzgün belgeler, nasıl yapılır: clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository Bu, cevabında açıklanan pvorb ile aynıdır.
ramesh.mimit

2
O Not clock.co.uk sonrası bir olduğunu tam npm kayıt yinelenen. Gerekli bağımlılıklarınızın yerel önbelleği için bulduğum en iyi çözüm npm_lazy . Üzerinde doc Çatalımda takip etmek biraz daha kolay olabilir.
Jake Berger

1
Tartışmaya biraz geç kaldığımı biliyorum, ancak yakın zamanda (ücretsiz) ürünümüze özel npm kayıt defteri desteği eklediğimizi eklemek istiyorum ProGet
Karl Harnagy

2
Aşağıda belirtildiği gibi, Nexus artık barındırılan ve proxy npm depolarını desteklemektedir.
Zac Thompson

8
Yıllar boyunca birçok seçenek mevcut hale geldi. Buna geri dönen herkes sadece 2011'de kabul ettiğim yanıtı değil tüm cevapları okumalıdır.
adam

Yanıtlar:


101

Bunu yapmanın kolay bir yolu olduğunu sanmıyorum.

Npm belgelerine bir bakış bize bunun mümkün olduğunu söyler:

Kendi özel kayıt defterimi çalıştırabilir miyim?

Evet!

En kolay yol, kanepe veritabanını çoğaltmak ve API'leri uygulamak için aynı (veya benzer) tasarım belgesini kullanmaktır.

Resmi CouchDB'den sürekli çoğaltma kurar ve ardından dahili CouchDB'nizi kayıt defteri yapılandırması olarak ayarlarsanız, özel paketlerin yanı sıra yayınlanan paketleri de okuyabilirsiniz ve varsayılan olarak yalnızca dahili olarak yayımlanır. Daha sonra tüm dünyanın görmesi için bir paket yayınlamak istiyorsanız, --registrybu komutun yapılandırmasını geçersiz kılabilirsiniz .

Saat blogunda özel bir npm deposunun nasıl oluşturulacağına dair mükemmel bir öğretici de var .

DÜZENLEME (2017-02-26):

Gerçekten yeni değil, ancak şimdi NPM'de özel paketleri barındırmak için ücretli planlar var .

Yıllar içinde NPM, NPM üzerine kurulmuş devasa ön uç ekosistemi aracılığıyla Node.js olmayan birçok şirket için de bir faktör haline geldi. Şirketiniz zaten Java projelerini dahili olarak barındırmak için Sonatype Nexus'u çalıştırıyorsa , bunu dahili NPM paketlerini barındırmak için de kullanabilirsiniz.

Diğer seçenekler arasında JFrog Artifactory ve Inedo ProGet var , ancak bunları kullanmadım.


201

https://github.com/isaacs/npmjs.org/ : npm sürüm v1.0.26'da özel git depo URL'lerini package.json dosyalarınıza bağımlılık olarak belirtebilirsiniz. Ben kullanmadım ama geribildirim isterim. Yapman gerekenler işte burada:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}

Aşağıdaki yazı bunun hakkında konuşuyor: Hata ayıklama: Özel npm modülleri


3
Bu harika bir özellik, ama pvorb'ları kabul ettim çünkü bir NPM repo, bir iç Maven repo ev sahipliği yapmayı soruyordum
adam

2
Not: NPM şu anda bu git URL'leriyle bir sürüm aralığı belirtmeyi desteklememektedir (örn. 1.2.x veya ^ 1.2.3). github.com/npm/npm/issues/3328
Clay

@Clay, bir etiket (v0.0.1) olsa da belirtebilirsiniz, değil mi?
mcha

Evet, kesin bir etiket yapabilirsiniz.
kil

Özel depolarda kimlik doğrulaması yapmak için GitHub konuşlandırma anahtarlarını kullanmanın bir yolu var mı?
sunknudsen

91

Bunu yapmak için kullanımı kolay bir npm paketi var. https://www.npmjs.org/package/sinopia

Özetle, Sinopia, sıfır yapılandırmayla ayarlayabileceğiniz özel / önbellek npm depo sunucusudur.

Sinopi aşağıdakiler için kullanılabilir:

  • kamuya açık olmadan kendi özel paketlerini yayınlamak
  • yalnızca kullanılan genel paketleri önbelleğe al (tüm genel kayıt defterini çoğaltmanıza gerek yoktur)
  • dahili olarak üretilen değiştirilmiş bir sürüme sahip genel paketleri geçersiz kılar.

13
Sinopi artık korunmuyor gibi görünüyor. Son taahhüt bugün itibariyle (7 Mart 2016) 8 aydan fazladır. Harika görünüyor ve iyi çalışıyor, ancak sürdürülebilirlik konusunda dikkatli olun.
Ray Booysen

45
Verdaccio'ya göz atın . Aktif olarak bakımı yapılan bir çatal: github.com/verdaccio/verdaccio
Rotareti

1
verdaccio herhangi bir genel kayıt defterini sorgulamayacağı bir "yalnızca özel" yapılandırmayı destekliyor mu?
MarkusSchaber

1
@MarkusSchaber Proxy'yi başka bir kayıt için devre dışı bırakabilirsiniz. Proxy ağa erişmeye çalışsa bile çevrimdışı modda çalışır.
Juan Picado

1
Verdaccio'nun bugün kendi cevabını hak ettiğini gerçekten düşünüyorum stackoverflow.com/a/50815174/336753 Burada ilk yorumu bile fark etmedim.
kub1x

40

Verdaccio aradığım şeydi ve kendi cevabını hak ediyor;) Sinopia'nın aktif olarak tutulan bir çatalıdır ( burada çok onaylanmış cevap ). Bir npm paketi olarak bir npm kayıt defteri ve bulunabilir

burada: https://github.com/verdaccio/verdaccio ,
burada: https://www.verdaccio.org ,
burada: pnpm i -g verdaccioveya
burada:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
bu! Eğer teşekkür -> liman işçisi çalıştırmak -çok --rm --detach --name verdaccio -p 4873: 4873 verdaccio / verdaccio
mwm

1
@mwm Teşekkür ederim. Listeye docker sürümü eklendi.
kub1x

28

14 Nisan (2015) tarihinde, npm özel modülleri tanıtıldı.

Özel modüller için ödeme yaptığınızda şunları yapabilirsiniz:

  • İstediğiniz kadar özel paket barındırın
  • Bu paketler için diğer ücretli kullanıcılara okuma erişimi veya okuma-yazma erişimi verin
  • Diğer ücretli kullanıcıların size okuma erişimi verdiği paketleri yükleyin ve kullanın
  • Diğer ücretli kullanıcıların size yazma erişimi verdiği paketler üzerinde işbirliği yapın

Tabii ki ücretsiz değil - şu anda kullanıcı başına ayda 7 $.

Ve hala oldukça yeni bir hizmet. Örneğin, kuruluş hesapları desteği eksik (Haziran 2015 itibarıyla):

Şu anda, özel paketler yalnızca bireysel kullanıcılar tarafından kullanılabilir, ancak kuruluş hesapları için destek yakında sağlanacaktır. Bu arada kuruluşunuz için bir kullanıcı oluşturmaktan çekinmeyin; destek burada olduğunda onu bir kuruluşa yükseltebiliriz.

Bu yüzden mükemmel olmasa da, özel paketleri korumak için resmi npm çözümü ve bu da bahsetmeye değer.

GÜNCELLEME

Npm Özel Paketleri artık hem bireysel kullanıcılar hem de kuruluşlar için planlarla kullanıma sunulmuştur :

  • Sınırsız sayıda ortak ve özel paket
  • 7 $ / ay / geliştirici
  • Kuruluş adına bağlı olarak bir kapsam adı içerir
  • @ Org-name / foo'ya erişimi yayınlama ve kontrol etme

(feragatname: npm, Inc. ile herhangi bir şekilde uzaktan bağlı bile değildir )


20

Özel npm kayıtlarını destekleyen havuz yöneticileri:


4
Yalnızca ücretli sürümler npm depolarını destekler; ücretsiz sürümleri yok.
Boon

12
Sonatype Nexus 3.0'ın ücretsiz sürümü aslında npm depolarını (bower ve docker depolarıyla birlikte) destekler.
n8n8baby

10

Sanırım bu iş parçacığının güncellenmesi gerekiyor. Mevcut olan npm kayıtlarından herhangi birine bakarsanız, son derece ağırdırlar ve couchdb'ye ihtiyaç duyarlar. Gemfurry ve diğerlerinin halka açık depolardan ayrılmanız gerekir. Npm'lerin bazılarının gölge-npm gibi yeni bir taahhütleri yoktur .

Sonra Reggie'yi bulduk . İyi bir taahhüt etkinliği var, kurulumu ve kullanımı son derece kolay ve oldukça iyi bir topluluk desteğine sahip . Son derece hafiftir ve couchdb vb.İle uğraşmanıza gerek yoktur.


9

Sorunuzu iyi anlamıyorsam beni affedin, ama işte cevabım:

Özel bir npm modülü oluşturabilir ve kurmak için npm'nin normal komutlarını kullanabilirsiniz. Node.js kullanıcılarının çoğu git'i depo olarak kullanır, ancak sizin için uygun olan depoyu kullanabilirsiniz.

  1. Projenizde bir NPM paketinin iskeletini isteyeceksiniz. Çoğu düğüm modülünün NPM ile nasıl entegre olduklarına bakabileceğiniz git depoları vardır (package.json dosyası, bunun bir parçası olduğuna inanıyorum ve NPM'nin web sitesi npm paketi nasıl yapacağınızı gösteriyor)
  2. Paketinizi internetten veya ağınızdan npm yükleme indirmeleri için hazırlayacak şekilde yapmak ve tarball yapmak için benzer bir şey kullanın.
  3. Paketiniz yapıldıktan sonra şunu kullanın:

    npm install * tarball_url *


5
Sorusunu sormadın, ama cevap benim için çok yararlı! :)
Eduardo Costa

7

Bu bildiğim en kolay yol - Gemfury özel npm kayıt defteri ile bulutta barındırmak .

Ücretsizdir ve Github hesabınızla giriş yapabilirsiniz. Kendi veritabanınızı kurmaya kıyasla size çok zaman kazandırmalıdır.


özgür değil tho.
I.Tyger

6

Sonatype Nexus kullanıyoruz, sürüm Nexus Depo Yöneticisi OSS 3.6.1-02. Ve eminim ki NPM özel havuzunu destekliyor ve paketi önbelleğe alıyor.

resim açıklamasını buraya girin


5

Partiye biraz geç, ancak NodeJS (~ 14 Kasım itibariyle) kurumsal NPM depolarını destekliyor - kendi resmi sitesinde daha fazla bilgi edinebilirsiniz .

İmtiyazlı bir bakışta, npmE'nin NPM deposunun düşey olarak yansıtılmasına izin verdiği anlaşılıyor - yani, dahili olanınızda bir tane bulamazsa gerçek NPM deposundaki paketleri arayacaktır . Çok faydalı görünüyor!

npm Enterprise, npm ve genel npm kayıtlarını tutan ekipten kuruluşunuzdaki JavaScript modüllerini güvenli bir şekilde paylaşmak ve dağıtmak için şirket içi bir çözümdür. Aşağıdakilere ihtiyaç duyan ekipler için tasarlanmıştır:

özel modüllerin kolay dahili paylaşımı Açık kaynaklı modüllerin dağıtılması etrafında geliştirme ve dağıtım iş akışının daha iyi kontrolü, şirket içi kodu barındırmak için yasal gerekliliklere uygunluk npmE özel npm'dir

npmE, zaten kullandığınız aynı standart npm istemcisi ile çalışan, ancak şimdi heyecanla düğümü benimseyen daha büyük kuruluşların ihtiyaç duyduğu özellikleri sağlayan bir npm kayıt defteri. Npm açık kaynak projesinin sponsoru ve genel npm kayıt defterinin sahibi npm, Inc. tarafından inşa edilmiştir.

Ne yazık ki, ücretsiz değil. Deneme alabilirsiniz, ancak ticari bir yazılımdır. Bu, solo geliştiriciler için o kadar da iyi değil, ancak solo bir geliştiriciyseniz, GitHub :-)


3

Bu yazı özel bir kayıt defterini nasıl kuracağınızı anlatıyor

  • couchdb'nin sisteminize yüklendiğinden emin olun
  • Npmjs.org çoğaltılırken aşağıdaki komutu kullanın

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"

"continuous":trueKomutta olduğunu unutmayın , bu CouchDB'nin _changes API'sini kullanır ve bu API bildirildiğinde yeni değişiklikleri çeker.

Bu kopyaları durdurmak isterseniz, kolayca ekleyebilirsiniz "cancel":true. Sonra senaryo

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"

Sonra npm'i kurmak için npmjs.org benioku adresine gidin ( nodejsve gityüklü olduğundan emin olun ). Darbe tüm adımlar

git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp 
npm install couchapp 
npm install semver 
couchapp push registry/app.js http://localhost:5984/registry 
couchapp push www/app.js http://localhost:5984/registry 

1
Url isaacs.iriscouch.com/registry maalesef artık öldü. İlk başta işe yarıyor gibi görünen skimdb.npmjs.com/registry olarak değiştirmeyi denedim , ancak
tarballları

Couchapp beni oku devletler couchapp şimdi tür kullanımdan kaldırıldı olduğunu, ama aynı zamanda tüm kayıt ayna akım yolu kullanımına diyor npm-fullfat-kayıt
fuzzyTew

Ben bunun için static-kayıt defteri kullanarak sona erdi , hangi couchdb çözümlerinin aksine hiçbir yapılandırma gerektirmez.
fuzzyTew


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.