czy możesz hostować prywatne repozytorium dla swojej organizacji do użycia z npm?

Npm brzmi jak świetna platforma do wykorzystania w organizacji, ciekawe, czy prywatne repo jest możliwe, jak z Nexus / Maven. Nic nie wychodzi na Google: (

Author: adam, 2011-09-27

14 answers

Nie sądzę, żeby było to łatwe.

A spójrz na dokumentację npm mówi nam, że jest to możliwe:

Czy mogę prowadzić prywatny rejestr?

Tak!

Najprostszym sposobem jest replikacja bazy danych couch i użycie tego samego (lub podobnego) dokumentu design do implementacji interfejsów API.

Jeśli skonfigurujesz ciągłą replikację z oficjalnego CouchDB, a następnie Ustaw wewnętrzny CouchDB jako konfigurację rejestru, będziesz możliwość odczytu wszystkich opublikowanych pakietów, oprócz prywatnych i domyślnie będzie publikować tylko wewnętrznie. Jeśli chcesz opublikować pakiet dla całego świata, możesz po prostu nadpisać konfigurację --registry dla tego polecenia.

Istnieje również doskonały samouczek Jak utworzyć prywatne repozytorium npm w blogu zegar.

Edytuj (2017-02-26):

Nie do końca nowe, ale są teraz płatne plany do hostingu prywatnego pakiety na NPM.

Przez lata, NPM stał się czynnikiem dla wielu innych węzłów.firmy js również, poprzez ogromny ekosystem frontend, który jest zbudowany na NPM. Jeśli Twoja firma już działa Sonatype Nexus do wewnętrznego hostingu projektów Java, możesz go również użyć do hostowania wewnętrznych pakietów NPM.

Inne opcje to Jfrog Artifactory i Inedo ProGet, ale nie korzystałem z nich.

 102
Author: pvorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-30 00:19:54

Https://github.com/isaacs/npmjs.org / : W wersji npm v1.0.26 możesz określić prywatne adresy URL repozytoriów git jako zależność w pakiecie.pliki json. Nie używałem go, ale chciałbym opinie. Oto co musisz zrobić:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:my-app.git#v0.0.1",
    }
}

Poniższy post mówi o tym: Debuggable: private npm modules

 204
Author: ebdr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 13:08:49

Istnieje łatwy w użyciu pakiet npm, aby to zrobić. https://www.npmjs.org/package/sinopia

W skrócie, Sinopia jest prywatnym / buforującym serwerem repozytorium npm, który można skonfigurować z zerową konfiguracją.

Sinopia może być używana do:

  • publikuj własne prywatne pakiety bez ujawniania ich publicznie
  • cache tylko pakiety publiczne, które są używane (nie ma potrzeby replikowania całego publicznego rejestru)
  • nadpisanie pakietów publicznych ze zmodyfikowaną wersją, która została wyprodukowana wewnętrznie.
 93
Author: TiQP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 15:09:47

Verdaccio jest tym, czego szukałem i zasługuje na własną odpowiedź ;) jest aktywnie utrzymywanym widelcem Sinopii (wysoce upvoted answer tutaj). Jest to rejestr npm jako pakiet npm i można go znaleźć

Tutaj: https://github.com/verdaccio/verdaccio,
tutaj: https://www.verdaccio.org,
i na port number: 4873

Uruchom za pomocą PM2

npm i -g verdaccio pm2
pm2 start --name verdaccio `which verdaccio`
pm2 save

Uruchom za pomocą docker

docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio

Run using Helm

helm repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio
 45
Author: kub1x,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-17 08:18:16

14 kwietnia 2015 roku zostały wprowadzone prywatne Moduły npm .

Kiedy płacisz za prywatne Moduły, możesz:

  • Hostuj tyle pakietów prywatnych, ile chcesz
  • dać dostęp do odczytu lub zapisu dla tych pakietów innemu płatnemu użytkownikowi
  • Instaluj i używaj pakietów, które inni płatni użytkownicy dali ci dostęp do odczytu
  • współpracuj nad wszystkimi pakietami, do których inni płatni użytkownicy dali ci dostęp do zapisu

Of oczywiście nie jest to darmowe-obecnie 7$ miesięcznie, za użytkownika.

I to wciąż całkiem nowa usługa. Na przykład brak wsparcia dla kont organizacji (stan na Czerwiec 2015):

Obecnie Pakiety prywatne są dostępne tylko dla indywidualnych użytkowników, ale wsparcie dla kont organizacji już wkrótce. W międzyczasie możesz utworzyć użytkownika dla swojej organizacji, a my możemy go uaktualnić do organizacji, gdy wsparcie jest tutaj.

Więc choć nie jest idealny, to oficjalne rozwiązanie npm do utrzymywania prywatnych pakietów, i to samo sprawia, że warto o tym wspomnieć.

UPDATE

Npm Private Packages są już dostępne, z planami zarówno dla użytkowników indywidualnych, jak i organizacji :

  • Nieograniczona liczba pakietów publicznych i prywatnych
  • $7 / month / developer
  • zawiera jedną nazwę zakresu, opartą na nazwie organizacji
  • Publikuj i kontroluj dostęp do @ org-name/foo

(zastrzeżenie: nie jest nawet zdalnie powiązany w jakikolwiek sposób z npm, Inc.)

 28
Author: bardzusny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Menedżerowie repozytoriów z obsługą prywatnych rejestrów npm:

 20
Author: Abel Pastur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 17:07:49

Myślę, że ten wątek wymaga aktualizacji. Jeśli spojrzeć na którykolwiek z rejestrów npm, które są dostępne, są one bardzo ciężkie i potrzebują couchdb. Gemfurry i inni potrzebują cię, abyś oddzielił się od publicznych transakcji repo. Niektóre z npm jak shadow-npm nie mają żadnych ostatnich commitów .

Potem znaleźliśmy Reggie . Ma dobrą aktywność commit, niezwykle łatwą w instalacji i obsłudze i ma całkiem dobre wsparcie społeczności . Jego niezwykle lekka waga i nie musisz sobie radzić z couchdb itp.

 10
Author: Pradeep Mahdevu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 17:05:52

Wybacz, jeśli nie rozumiem dobrze twojego pytania, ale oto moja odpowiedź:

Możesz utworzyć prywatny moduł npm i użyć zwykłych poleceń npm, aby go zainstalować. Większość węzłów.użytkownicy js używają Gita jako swojego repozytorium, ale możesz używać dowolnego repozytorium, które działa dla Ciebie.

  1. w Twoim projekcie będziesz potrzebował szkieletu pakietu NPM. Najbardziej Moduły node posiadają repozytoria git, w których można sprawdzić jak integracja z NPM (pakiet.plik json, uważam, że jest częścią to i Strona NPM pokazuje jak zrobić pakiet npm)
  2. użyj czegoś podobnego, aby zrobić, aby zrobić i tarballować pakiet, aby być dostępne z Internetu lub sieci w celu skonfigurowania go dla npm zainstaluj pliki do pobrania.
  3. Po przygotowaniu opakowania należy użyć

    Npm install * tarball_url *

 9
Author: EhevuTov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 23:35:08

Jest to najprostszy sposób, jaki znam-Hostuj go w chmurze za pomocą Gemfury prywatnego rejestru npm.

Jest darmowy i możesz zalogować się na swoje konto Github. Powinno to zaoszczędzić dużo czasu, w porównaniu do tworzenia własnej bazy danych.

 7
Author: alex urdea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-03 16:38:24

Używamy Sonatype Nexus, wersja To Nexus Repository Manager 3.6.1-02. I jestem pewien, że obsługuje prywatne repozytorium NPM i buforuje pakiet.

Tutaj wpisz opis obrazka

 7
Author: Xin Meng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-26 18:46:25

Trochę za późno na imprezę, ale NodeJS (chyba od ~14 listopada) obsługuje korporacyjne repozytoria NPM - więcej można dowiedzieć się na ich oficjalnej stronie .

Z pobieżnego spojrzenia mogłoby się wydawać, że npmE pozwala na dublowanie fall-through repozytorium NPM - to znaczy, że wyszukuje pakiety w repozytorium real NPM, jeśli nie może znaleźć go na twoim wewnętrznym. Wydaje się bardzo przydatne!

Npm Enterprise to lokalne rozwiązanie do bezpiecznego udostępniania i Dystrybucja modułów JavaScript w Twojej organizacji, od zespołu, który utrzymuje npm i publiczny rejestr npm. Jest przeznaczony dla zespołów, które potrzebują:

Łatwe wewnętrzne dzielenie prywatnych modułów lepsza kontrola rozwoju i workflow wdrażania bardziej rygorystyczne zabezpieczenia wokół wdrażania open-source zgodność modułów z wymogami prawnymi dotyczącymi kodu hosta w siedzibie npmE jest prywatnym npm

Npme jest rejestrem npm, który działa z tym samym standardowym klientem npm ty już używany, ale zapewnia funkcje potrzebne przez większe organizacje, które teraz entuzjastycznie przyjmują node. Jest zbudowany autor: npm, Inc., sponsora projektu npm open source oraz gospodarza publicznego rejestru npm.

Niestety, nie jest za darmo. Możesz uzyskać wersję próbną, ale jest to oprogramowanie komercyjne. To nie jest zbyt dobry bit dla deweloperów solo, ale jeśli jesteś deweloperem solo, masz GitHub: -)

 5
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-06 16:24:44

Ten post mówi o tym, jak skonfigurować prywatny rejestr

  • upewnij się, że couchdb jest zainstalowany w Twoim systemie
  • Replikacja npmjs.org użyj następującego polecenia

    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"
    

Uwaga Istnieje "continuous":true w poleceniu, które wykorzystuje API _changes CouchDB i pobierze wszelkie nowe zmiany, gdy ten API zostanie powiadomiony.

Jeśli kiedykolwiek chcesz zatrzymać te replikacje, możesz łatwo dodać "cancel":true. Wtedy skrypt będzie

    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"

Wtedy przejdź do npmjs.org readme aby zainstalować npm (upewnij się, że nodejs i git są zainstalowane). Blow is all the steps

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 
 3
Author: nickleefly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-23 10:44:57

Mogę się trochę spóźnić na imprezę, ale któryś z tych dwóch może Ci się udać:

  1. http://www.jfrog.com/confluence/display/RTF/Npm + repozytoria
  2. https://github.com/krakenjs/kappa
 2
Author: Prabhat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 17:13:41

Możesz również użyć Aragon Package Manager, jeśli wolisz zdecentralizowane podejście:

  1. Using APM: http://blog.aragon.jeden / używanie-apm-do-zastąpienia-npm-i-innych-scentralizowanych-menedżerów-pakietów /
  2. wdrażanie APM: https://github.com/aragon/aragonOS#apm
 0
Author: countTheRow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-11 12:20:13