Npm brzmi jak świetna platforma do wykorzystania w organizacji, ciekawa, czy możliwe jest prywatne repo, jak w Nexus / Maven. Nic nie pojawia się w Google :(
Npm brzmi jak świetna platforma do wykorzystania w organizacji, ciekawa, czy możliwe jest prywatne repo, jak w Nexus / Maven. Nic nie pojawia się w Google :(
Odpowiedzi:
Nie sądzę, że istnieje prosty sposób, aby to zrobić.
Spojrzenie na dokumentacji npm mówi nam, że jest to możliwe:
Czy mogę uruchomić własny rejestr prywatny?
Tak!
Najprostszym sposobem jest replikacja bazy danych couch i użycie tego samego (lub podobnego) dokumentu projektowego do implementacji interfejsów API.
Jeśli skonfigurujesz ciągłą replikację z oficjalnej CouchDB, a następnie ustawisz wewnętrzną CouchDB jako konfigurację rejestru, będziesz mógł czytać dowolne opublikowane pakiety, oprócz prywatnych, i domyślnie będą publikować tylko wewnętrznie. Jeśli chcesz opublikować pakiet dla całego świata, możesz po prostu przesłonić
--registry
konfigurację tego polecenia.
Istnieje również doskonały samouczek na temat tworzenia prywatnego repozytorium npm na blogu z zegarem.
EDYCJA (26.02.2017):
Nie bardzo nowe, ale teraz są płatne plany hostowania prywatnych pakietów na NPM.
Z biegiem lat NPM stał się również czynnikiem dla wielu firm spoza Node.js, dzięki ogromnemu ekosystemowi frontendowemu, 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.
https://github.com/isaacs/npmjs.org/ : W npm wersji v1.0.26 możesz określić adresy URL prywatnych repozytoriów git jako zależność w plikach package.json. Nie korzystałem z niego, ale chciałbym poznać opinie. Oto, co musisz zrobić:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
}
}
Następujący post mówi o tym: Debuggable: Prywatne moduły npm
Do tego celu jest łatwy w użyciu pakiet npm. https://www.npmjs.org/package/sinopia
W skrócie, Sinopia jest prywatnym / buforującym serwerem repozytorium npm, który można skonfigurować przy zerowej konfiguracji.
Sinopia może być używana do:
Verdaccio jest tym, czego szukałem i zasługuje na swoją własną odpowiedź;) Jest to aktywnie utrzymany rozwidlenie Sinopii ( tutaj wysoko oceniana odpowiedź ). Jest to rejestr npm jako pakiet npm i można go znaleźć
tutaj: https://github.com/verdaccio/verdaccio ,
tutaj: https://www.verdaccio.org ,
tutaj: pnpm i -g verdaccio
lub
tutaj:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
14 kwietnia (2015) wprowadzono moduły prywatne npm .
Płacąc za moduły prywatne, możesz:
- Hostuj tyle prywatnych pakietów, ile chcesz
- Przyznaj dostęp do odczytu lub odczytu i zapisu dla tych pakietów innym płatnym użytkownikom
- Zainstaluj i korzystaj z pakietów, do których dostęp otrzymali inni płatni użytkownicy
- Współpracuj nad wszelkimi pakietami, do których inni płatni użytkownicy dali ci dostęp do zapisu
Oczywiście nie jest to bezpłatne - obecnie 7 $ miesięcznie na użytkownika.
I wciąż jest to całkiem nowa usługa. Na przykład brakuje obsługi kont organizacji (stan na czerwiec 2015 r.):
Obecnie prywatne pakiety są dostępne tylko dla indywidualnych użytkowników, ale wkrótce będzie dostępna obsługa kont organizacji. Tymczasem możesz utworzyć użytkownika dla swojej organizacji, a my możemy go uaktualnić do organizacji, gdy będzie dostępna pomoc.
Chociaż nie jest to idealne, jest to oficjalne rozwiązanie npm do utrzymywania prywatnych pakietów, i to samo w sobie sprawia, że warto o tym wspomnieć.
AKTUALIZACJA
Prywatne pakiety Npm są teraz dostępne, z planami zarówno dla indywidualnych użytkowników, jak i organizacji :
- Nieograniczona liczba pakietów publicznych i prywatnych
- 7 USD / miesiąc / programista
- Obejmuje jedną nazwę zakresu na podstawie nazwy organizacji
- Publikuj i kontroluj dostęp do @ org-name / foo
(wyłączenie odpowiedzialności: nawet w żaden sposób nie powiązane zdalnie z npm, Inc. )
Myślę, że ten wątek wymaga aktualizacji. Jeśli spojrzysz na którykolwiek z dostępnych rejestrów npm, są one bardzo ciężkie i potrzebują couchdb. Gemfurry i inni potrzebują odejścia od publicznych repozytoriów. Niektóre z npm jak np. Shadow-npm nie mają ostatnich zatwierdzeń .
Potem znaleźliśmy Reggie . Ma dobrą aktywność zatwierdzania, niezwykle łatwą instalację i obsługę oraz całkiem dobre wsparcie społeczności . Jest niezwykle lekki i nie musisz zajmować się couchdb itp.
Wybacz mi, jeśli nie rozumiem twojego pytania, ale oto moja odpowiedź:
Możesz utworzyć prywatny moduł npm i użyć normalnych poleceń npm, aby go zainstalować. Większość użytkowników node.js używa git jako swojego repozytorium, ale możesz użyć dowolnego repozytorium, które Ci odpowiada.
Po utworzeniu paczki użyj
npm install * tarball_url *
Trochę za późno na imprezę, ale NodeJS (jak sądzę od dnia 14 listopada) obsługuje korporacyjne repozytoria NPM - więcej informacji można znaleźć na ich oficjalnej stronie .
Z pobieżnego spojrzenia mogłoby się wydawać, że npmE pozwala na dublowanie repozytorium NPM - to znaczy, przeszuka pakiety w prawdziwym repozytorium NPM, jeśli nie będzie w stanie znaleźć go w twoim wewnętrznym. Wydaje się bardzo przydatny!
npm Enterprise to lokalne rozwiązanie do bezpiecznego udostępniania i dystrybucji 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 udostępnianie prywatnych modułów lepsza kontrola przebiegu prac programistycznych i wdrożeniowych ściślejsze bezpieczeństwo wokół wdrażania modułów open source zgodność z wymogami prawnymi do hosta kodu lokalnego npmE to prywatne npm
npmE jest rejestrem npm, który działa z tym samym standardowym klientem npm, którego już używasz, ale zapewnia funkcje potrzebne większym organizacjom, które teraz entuzjastycznie adoptują węzeł. Jest zbudowany przez npm, Inc., sponsora projektu open source npm i hosta publicznego rejestru npm.
Niestety nie jest za darmo. Możesz uzyskać wersję próbną, ale jest to oprogramowanie komercyjne. To nie jest świetny kawałek dla programistów solo, ale jeśli jesteś programistą solo, masz GitHub :-)
Ten post mówi o tym, jak skonfigurować prywatny rejestr
Replikując 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"
Zauważ, że jest "continuous":true
w poleceniu, to wykorzystuje interfejs API _changes CouchDB i pobierze wszelkie nowe zmiany, gdy ten interfejs API zostanie powiadomiony.
Jeśli kiedykolwiek chcesz zatrzymać te replikacje, możesz łatwo dodać "cancel":true
. Wtedy skrypt byłby
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"
Następnie przejdź do npmjs.org readme zainstalować NPM (upewnij się, nodejs
a git
jest zainstalowany). Cios to wszystkie kroki
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
Mogę być trochę spóźniony na przyjęcie, ale każdy z tych dwóch może dla ciebie pracować:
Możesz również użyć Aragon Package Manager, jeśli wolisz podejście zdecentralizowane: