Jak zainstalować prywatny moduł NPM bez własnego rejestru?

Wziąłem jakiś współdzielony kod i umieściłem go w module NPM, którego nie chcę przesyłać do centralnego rejestru. Pytanie, Jak zainstalować go z innych projektów?

Oczywistym sposobem jest prawdopodobnie skonfigurowanie własnego rejestru NPM, ale zgodnie z dokumentacją, wiąże się to z wieloma kłopotami.

Czy mogę po prostu zainstalować moduł NPM, który znajduje się na lokalnym systemie plików, a może nawet z git?

npm install --from-git git@server:project
Author: Yves M., 2012-04-30

12 answers

cd somedir
npm install .

Lub

npm install path/to/somedir

somedir musi zawierać package.json w środku.

O git też wie:

npm install git://github.com/visionmedia/express.git
 222
Author: mihai,
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
2012-04-30 21:47:13

W twoich prywatnych modułach npm dodaj

"private": true 
Do twojej paczki.json

Następnie, aby odwołać się do prywatnego modułu w innym module, użyj tego w swoim pakiecie.json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:myaccount/myprivate.git#v1.0.0",
    }
}
 466
Author: 250R,
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-21 16:27:48

Czy mogę po prostu zainstalować pakiet NPM, który znajduje się na lokalnym systemie plików, a może nawet z Gita?

Tak, możesz! Z docs https://docs.npmjs.com/cli/install

Pakiet to:

  • a) folder zawierający program opisany przez pakiet.plik json
  • b) gziped tarball zawierający (a)
  • c) adres url, który rozwiązuje się do (b)
  • d) A <name>@<version> który jest opublikowany w rejestrze za pomocą (c)
  • e) a <name>@<tag> które wskazuje na (d)
  • f) A <name> który ma znacznik" najnowsze " (e)
  • g) a {[3] } które rozwiązuje się do (b)
Czy npm nie jest genialne?
 57
Author: Colonel Panic,
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-14 16:31:37

Aktualizacja Styczeń 2016

oprócz innych odpowiedzi, czasami istnieje scenariusz, w którym chcesz mieć prywatne moduły dostępne w kontekście zespołu.

ZARÓWNO Github jak i Bitbucket wspierają koncepcję generowania klucza API team . Ten klucz API może być użyty jako hasło {[4] } do wykonywania żądań API jako ten zespół.

W twoich prywatnych modułach npm dodaj

"private": true 

Do twojego Pakiet.json

Następnie, aby odwołać się do prywatnego modułu w innym module, użyj tego w swoim pakiecie.json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:[email protected]/myprivate.git",
        }
    }

Gdzie nazwa zespołu = myteamname i Klucz API = Aqqtcplwfzlumj0middrgcbsaq5d6xg4

Tutaj odwołuję się do bitbucket repo, ale jest prawie identyczny z github.

Wreszcie, jako alternatywa, jeśli naprawdę nie masz nic przeciwko płaceniu $7 miesięcznie (w momencie pisania), możesz teraz mieć prywatne Moduły NPM Z pudełko.

 37
Author: arcseldon,
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
2016-01-13 00:11:07

FWIW: miałem problemy z tymi wszystkimi odpowiedziami, gdy miałem do czynienia z prywatnym repozytorium organizacji.

Zadziałało dla mnie:

npm install -S "git+https://[email protected]/orgname/repositoryname.git"

Na przykład:

npm install -S "git+https://[email protected]/netflix/private-repository.git"

Nie jestem do końca pewien, dlaczego inne odpowiedzi nie działały dla mnie w tym jednym przypadku, ponieważ są to, co próbowałem najpierw zanim trafiłem na Google i znalazłem tę odpowiedź. A inne odpowiedzi są tym, co robiłem w przeszłości.

Mam nadzieję, że to pomoże komuś innemu.
 24
Author: Ben Lesh,
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-06-20 21:45:11

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 uwierzytelniania po instalacji), i jest jeszcze bardzo młody, ale Przetestowałem go lokalnie i wydaje się robić to, co mówi, że powinien zrobić.

To znaczy... (i to tylko z ich dokumentów)
npm install -g reggie
reggie-server -d ~/.reggie

Następnie cd do katalogu modułu i...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

Na koniec, możesz instalować pakiety z reggie używając tego adresu url albo w poleceniu direct npm install, albo z pakietu.json... like so

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

Lub..

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}
 7
Author: bwest87,
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-11-16 23:04:40

Uporządkuj swój kod w przystępny sposób, jak poniżej. Jeśli jest to dla ciebie możliwe.

  • NodeProjs\Apps\MainApp \ package.json

  • NodeProjs\Modules\DataModule \ package.json

Wewnątrz MainApp @ NodProjs\Apps \ MainApp\

npm install --S ../../Modules/DataModule

Może być konieczna aktualizacja pakietu.json as:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}
To zadziałało na moją sytuację.
 6
Author: wchoward,
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
2016-09-14 20:32:47

Zaczynając od odpowiedzi arcseldona , stwierdziłem, że nazwa drużyny była potrzebna w adresie URL tak:

npm install --save "git+https://myteamname@[email protected]/myteamname/myprivate.git"

I zauważ, że klucz API jest dostępny tylko dla zespołu, a nie indywidualnych użytkowników.

 3
Author: neonhomer,
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
2017-05-23 10:31:37

Npm teraz zapewnia nieograniczoną prywatne hostowane Moduły ZA $7/użytkownik/miesiąc używany tak

cd private-project
npm login

W pakiecie json set "name": " @username/private-project"

npm publish

Następnie wymagaj swojego projektu:

cd ../new-project
npm install --save @username/private-project
 2
Author: roo2,
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-06-03 06:23:20

Config do zainstalowania z publicznego repozytorium Github, nawet jeśli komputer znajduje się pod firewallem:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}
 1
Author: Alex Belozerov,
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-04 10:59:05

Używam poniższego z prywatnym repozytorium github:

npm install github:mygithubuser/myproject
 1
Author: Lars,
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
2017-02-14 20:58:22

Bardzo proste -

npm config set registry https://path-to-your-registry/

Ustawia registry = "https://path-to-your-registry" tę linię na /Users/<ur-machine-user-name>/.npmrc

Wszystkie wartości, które ustawiłeś jawnie lub zostały ustawione domyślnie, można zobaczyć za pomocą - npm config list

 0
Author: sapy,
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
2017-07-27 09:05:34