Como instalar um módulo NPM privado sem o meu próprio registo?

Peguei num código partilhado e coloquei-o num módulo NPM, um que não quero enviar para o registo central. A questão é, Como posso instalá-lo a partir de outros projetos?

A forma óbvia é, provavelmente, criar o meu próprio registo do MPN, mas, de acordo com a documentação, isso envolve muito trabalho.

Posso apenas instalar um módulo NPM que se encontra no sistema de ficheiros local, ou talvez mesmo do git?

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

12 answers

cd somedir
npm install .

Ou

npm install path/to/somedir

somedir deve conter o package.json dentro dele.

Ele também sabe do git:

npm install git://github.com/visionmedia/express.git
 222
Author: mihai, 2012-04-30 21:47:13

Nos seusmódulos npm privados Adicionar

"private": true 

Ao seu pacote.json

Depois, para referenciar o módulo privado noutro módulo, use isto no seu pacote.json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:myaccount/myprivate.git#v1.0.0",
    }
}
 466
Author: 250R, 2014-05-21 16:27:48

Posso apenas instalar um pacote NPM que se encontra no sistema de ficheiros local, ou talvez mesmo do git?

Podes, sim! Do docs https://docs.npmjs.com/cli/install

Um pacote é:

  • a) uma pasta que contém um programa descrito por um pacote.ficheiro JSON
  • B) uma tarball com borrachos contendo (a)
  • c) um url que se resolve a (b)
  • d) A <name>@<version> que é publicada na secretaria com (c)
  • e) a {[1] } que aponta para d)
  • f) a {[2] } que tem uma etiqueta" mais recente " que satisfaz (e)
  • g) a {[3] } que se resolve a (b)
O MPN Não é brilhante?
 57
Author: Colonel Panic, 2015-01-14 16:31:37

Actualizar Janeiro 2016

além de outras respostas {[[9]}, às vezes existe o cenário em que você deseja ter módulos privados disponíveis em um contexto de equipe.

Ambos Github e Bitbucket suportam o conceito de gerar uma equipa API Key . Esta chave de API pode ser usada como a senha para executar pedidos de API como esta equipa.

Nos seusmódulos npm privados Adicionar

"private": true 

Ao seu pacote.json

Depois, para referenciar o módulo privado noutro módulo, use isto no seu pacote.json

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

Where team name = myteamname , and API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

Aqui eu faço referência a um acordo de bitbucket, mas é quase idêntico usando github também.

Finalmente, como alternativa, se realmente não se importa de pagar $7 por mês (a partir da escrita) então você pode agora ter módulos npm privados de caixa.

 37
Author: arcseldon, 2016-01-13 00:11:07

FWIW: eu tive problemas com todas essas respostas quando lidava com um repositório de organizações privadas.

O seguinte funcionou para mim:

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

Por exemplo:

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

Não sei bem porque é que as outras respostas não funcionaram para mim neste caso, porque foram o que tentei primeiro antes de ir ao Google e encontrar esta resposta. E as outras respostas são o que fiz no passado.

Espero que isto ajude outra pessoa.
 24
Author: Ben Lesh, 2014-06-20 21:45:11
Tive o mesmo problema, e depois de algumas buscas, encontrei o Reggie. https://github.com/mbrevoort/node-reggie parece bastante sólido. Ele permite a publicação leve de módulos NPM para servidores privados. Não é perfeito (sem autenticação na instalação), e ainda é muito jovem, mas eu testei localmente, e parece fazer o que ele diz que deve fazer. Isto é... (e isto só dos documentos deles)
npm install -g reggie
reggie-server -d ~/.reggie

Depois cd para a pasta do módulo e...

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

Finalmente, você pode instalar pacotes de reggie apenas usando esse url em um comando direto de instalação npm, ou de dentro de um pacote.json... assim.

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

Ou..

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

Estruture o seu código de uma forma acessível como em baixo. Se isto for possível para ti.

  • NodeProjs\Apps\MainApp\pacote.json

  • NodeProjs\Modules\datamodule\package.json

No MainApp @ NodProjs\Apps\MainApp\

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

Você pode precisar atualizar o pacote.json as:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}
Isto funcionou para a minha situação.
 6
Author: wchoward, 2016-09-14 20:32:47

Começando com a resposta de arcseldon , descobri que o nome da equipa era necessário na URL como assim:

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

E note que a chave API só está disponível para a equipa, não para utilizadores individuais.

 3
Author: neonhomer, 2017-05-23 10:31:37

O MPN oferece agora módulos ilimitados privados hospedados para $7 / utilizador / mês usado como so

cd private-project
npm login

Na embalagem json set "name": " @username/private-project"

npm publish

Então para requerer o seu projecto:

cd ../new-project
npm install --save @username/private-project
 2
Author: roo2, 2015-06-03 06:23:20

Configuração para instalar a partir do repositório público de Github, mesmo que a máquina esteja sob firewall:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}
 1
Author: Alex Belozerov, 2015-03-04 10:59:05

Uso o seguinte com um repositório privado do github:

npm install github:mygithubuser/myproject
 1
Author: Lars, 2017-02-14 20:58:22

Muito simples -

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

Ele realmente define registry = "https://path-to-your-registry" Esta linha para /Users/<ur-machine-user-name>/.npmrc

Todo o valor que definiu explicitamente ou que foi definido por omissão pode ser visto por - npm config list

 0
Author: sapy, 2017-07-27 09:05:34