Wziąłem wspólny kod i umieściłem go w module NPM, którego nie chcę przesyłać do centralnego rejestru. Pytanie brzmi: jak zainstalować go z innych projektów?
Oczywistym sposobem jest prawdopodobnie utworzenie własnego rejestru NPM, ale zgodnie z dokumentacją wiąże się to z wieloma problemami.
Czy mogę po prostu zainstalować moduł NPM, który znajduje się w lokalnym systemie plików, a może nawet z git?
npm install --from-git git@server:project
node.js
npm
package
npm-private-modules
futlib
źródło
źródło
npm install
skopiowaniu wszystkich plików do katalogu projektu. Tak więc ścieżki wrequire
instrukcjach będą względne tylko do katalogu projektu.install
czy to nie wystarczy zainstalować tam, a nie dla projektu, do którego chcesz go użyć?#<ref>
na końcu adresu URL git, np .git://github.com/visionmedia/express.git#v0.0.1
; (b) Dla bezpieczeństwa dodaj"private": true
do pliku package.json swoich prywatnych repozytoriów. Dzięki temu npm nigdy nie pozwoli ci przypadkowo opublikować swojego tajnego sosu w oficjalnym rejestrze npm. (według debuggable.com/posts/… )npm i git+http://all/the/things.git
mimo żegit clone http://all/the/things.git
działa dobrzeW swoich prywatnych modułach npm dodaj
do pliku package.json
Następnie, aby odwołać się do modułu prywatnego w innym module, użyj tego w pliku package.json
źródło
"private": true
część nie jest konieczna, ale pomoże zapobiec przypadkowemu opublikowaniu twojego prywatnego repo w publicznym rejestrze npm.npm install <git remote url>
sekcji znajdują się opcje takie jakGIT_ASKPASS
i.GIT_SSH
Przykładowe użycie, aby wybrać inny klucz niż domyślny id_rsa:GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git
Tak, możesz! Z dokumentacji https://docs.npmjs.com/cli/install
Czy npm nie jest genialny?
źródło
tar -czf my-package.tar.gz dist
(zakładając, że twójdist
folder zawiera również odpowiednipackage.json
plik), możesz to zrobićnpm install ../my-lib/my-package.tar.gz
z innego projektu.Aktualizacja ze stycznia 2016 r
Oprócz innych odpowiedzi czasami zdarza się scenariusz, w którym chcesz mieć prywatne moduły dostępne w kontekście zespołu.
Zarówno Github, jak i Bitbucket obsługują koncepcję generowania klucza API zespołu . Tego klucza interfejsu API można użyć jako hasła do wykonywania żądań interfejsu API w ramach tego zespołu.
W swoich prywatnych modułach npm dodaj
do pliku package.json
Następnie, aby odwołać się do modułu prywatnego w innym module, użyj tego w pliku package.json
gdzie nazwa zespołu = nazwa myteam , a klucz API = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
Odnoszę się tutaj do repozytorium bitbucket, ale jest ono prawie identyczne również w przypadku github.
Wreszcie, alternatywnie, jeśli naprawdę nie masz nic przeciwko płaceniu 7 USD miesięcznie ( od momentu pisania), możesz teraz mieć prywatne moduły NPM od razu po wyjęciu z pudełka.
źródło
FWIW: Miałem problemy z tymi wszystkimi odpowiedziami, gdy miałem do czynienia z repozytorium organizacji prywatnej.
Dla mnie działało:
Na przykład:
Nie jestem do końca pewien, dlaczego inne odpowiedzi nie działały dla mnie w tym jednym przypadku, ponieważ to były te, które wypróbowałem najpierw, zanim trafiłem do Google i znalazłem tę odpowiedź. Inne odpowiedzi są tym, co zrobiłem w przeszłości.
Mam nadzieję, że pomoże to komuś innemu.
źródło
https://
i upewnij się, że hasło nie jest potrzebne przy drugim uruchomieniu. W takim razie możesz zacząć!)Miałem ten sam problem i po kilku poszukiwaniach znalazłem Reggie ( https://github.com/mbrevoort/node-reggie ). Wygląda całkiem solidnie. Pozwala na lekkie publikowanie modułów NPM na prywatnych serwerach. Nie jest idealny (brak uwierzytelnienia po instalacji), i wciąż jest bardzo młody, ale przetestowałem go lokalnie i wydaje się, że robi to, co według niego powinien zrobić.
To jest ... (i to tylko z ich dokumentów)
następnie cd do katalogu modułu i ...
wreszcie możesz zainstalować pakiety z reggie, używając tego adresu URL albo w bezpośrednim poleceniu instalacji npm, albo w pliku package.json ...
lub..
źródło
Zbuduj swój kod w przystępny sposób, jak poniżej. Jeśli to jest możliwe dla ciebie.
W MainApp @ NodProjs \ Apps \ MainApp \
Konieczne może być zaktualizowanie pliku package.json jako:
To zadziałało w mojej sytuacji.
źródło
Npm zapewnia obecnie nieograniczoną liczbę prywatnych modułów hostowanych za 7 USD / użytkownika / miesiąc
w twoim pakiecie json
"name": " @username/private-project"
następnie, aby wymagać projektu:
źródło
Zaczynając od odpowiedzi arcseldon , stwierdziłem, że w adresie URL potrzebna była nazwa zespołu:
I pamiętaj, że klucz API jest dostępny tylko dla zespołu, a nie dla poszczególnych użytkowników.
źródło
Skonfiguruj instalację z publicznego repozytorium Github, nawet jeśli maszyna jest pod firewallem:
źródło
Używam następujących elementów z prywatnym repozytorium github:
źródło
Właśnie tego szukałem :
źródło
W tym celu można użyć Verdaccio, który jest lekkim prywatnym rejestrem proxy npm wbudowanym w Node.js. Jest także darmowy i open source. Korzystanie z Verdaccio nie wymaga tyle kłopotów, co zwykły prywatny rejestr npm.
Możesz znaleźć szczegółowe informacje o tym, jak zainstalować i uruchomić go na swojej stronie internetowej, ale oto kroki:
To wymaga
node >=8.x
.Ma również okno dokowane, dzięki czemu można łatwo opublikować go w publicznie dostępnym oknie dokowanym, a voila ma prywatne repozytorium npm, które można dystrybuować w sposób konfigurowany!
źródło
Bardzo prosta -
Właściwie ustawia
registry = "https://path-to-your-registry"
tę linię na/Users/<ur-machine-user-name>/.npmrc
Wszystkie wartości, które zostały ustawione jawnie lub zostały ustawione domyślnie, mogą być widoczne przez -
npm config list
źródło