Como instalar um módulo privado do NPM sem meu próprio registro?

Eu peguei algum código compartilhado e coloquei em um módulo NPM, um que eu não quero carregar no registro central. A questão é, como faço para instalá-lo de outros projetos?

A maneira óbvia é provavelmente configurar meu próprio registro NPM, mas, de acordo com a documentação, isso envolve muitos problemas.

Posso apenas instalar um módulo NPM que fica no sistema de arquivos local, ou talvez até mesmo no git?

npm install --from-git git@server:project 

   
     cd somedir npm install . 

    ou

     npm install path/to/somedir 

    somedir deve conter o package.json dentro dele.

    Ele também conhece o git:

     npm install git://github.com/visionmedia/express.git 

    Nos seus módulos npm privados, adicione

     "private": true 

    para o seu pacote.json

    Então, para referenciar o módulo privado em outro módulo, use isso em seu pacote.json

     { "name": "myapp", "dependencies": { "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0", } } 

    Posso apenas instalar um pacote NPM que fica no sistema de arquivos local, ou talvez até mesmo no git?

    Sim você pode! Nos documentos https://docs.npmjs.com/cli/install

    Um pacote é:

    • a) uma pasta contendo um programa descrito por um arquivo package.json
    • b) um tarball compactado contendo (a)
    • c) uma URL que resolve para (b)
    • d) um @ publicado no registro com (c)
    • e) um @ que aponta para (d)
    • f) um que tenha uma tag “mais recente” satisfazendo (e)
    • g) um que resolve para (b)

    Não é npm shiny?

    Atualização de janeiro de 2016

    Além de outras respostas , às vezes há o cenário em que você deseja ter módulos privados disponíveis em um contexto de equipe.

    Tanto o Github quanto o Bitbucket suportam o conceito de gerar uma chave de API de equipe. Essa chave de API pode ser usada como a senha para realizar solicitações de API como essa equipe.

    Nos seus módulos npm privados, adicione

     "private": true 

    para o seu pacote.json

    Então, para referenciar o módulo privado em outro módulo, use isso em seu pacote.json

      { "name": "myapp", "dependencies": { "private-repo": "git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git", } } 

    em que nome da equipe = myteamname e chave da API = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

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

    Finalmente, como alternativa, se você realmente não se importar em pagar US $ 7 por mês (como por escrito), então agora você pode ter módulos NPM privados prontos para uso.

    FWIW: Eu tive problemas com todas essas respostas ao lidar com um repository de organização privada.

    O seguinte funcionou para mim:

     npm install -S "git+https://username@github.com/orgname/repositoryname.git" 

    Por exemplo:

     npm install -S "git+https://blesh@github.com/netflix/private-repository.git" 

    Não sei bem por que as outras respostas não funcionaram para mim neste único caso, porque elas são o que eu tentei antes de atingir o Google e encontrar essa resposta. E as outras respostas são o que eu fiz no passado.

    Espero que isso ajude alguém.

    Eu tive esse mesmo problema, e depois de algumas pesquisas, encontrei Reggie ( https://github.com/mbrevoort/node-reggie ). Parece bem sólido. Permite a publicação leve de módulos NPM em servidores privados. Não perfeito (sem autenticação na instalação), e ainda é muito novo, mas eu testei localmente, e parece fazer o que ele diz que deveria fazer.

    Isso é … (e isso apenas de seus docs)

     npm install -g reggie reggie-server -d ~/.reggie 

    então cd no diretório do seu módulo e …

     reggie -u http:// publish reggie -u http://127.0.0.1:8080 publish 

    finalmente, você pode instalar pacotes do reggie apenas usando essa url em um comando npm install direto, ou dentro de um pacote.json … assim

     npm install http:///package// npm install http:///package/foo/1.0.0 

    ou..

     dependencies: { "foo": "http:///package/foo/1.0.0" } 

    Estruture seu código de uma forma acessível como abaixo. Se isso é possível para você.

    • NodeProjs \ Apps \ MainApp \ package.json

    • NodeProjs \ Modules \ DataModule \ package.json

    Dentro do MainApp @ NodProjs \ Apps \ MainApp \

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

    Você pode precisar atualizar o package.json como:

      "dependencies": { "datamodule": "../../Modules/DataModule" } 

    Isso funcionou para a minha situação.

    Começando com a resposta do arcseldon , descobri que o nome da equipe era necessário no URL da seguinte forma:

     npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git" 

    E observe que a chave da API está disponível apenas para a equipe, não para usuários individuais.

    Npm agora fornece módulos hospedados privados ilimitados por US $ 7 / usuário / mês usado como assim

     cd private-project npm login 

    no seu pacote json set "name": " @username/private-project"

     npm publish 

    então para exigir seu projeto:

     cd ../new-project npm install --save @username/private-project 

    Config para instalar a partir do repository público do Github, mesmo que a máquina esteja sob o firewall:

     dependencies: { "foo": "https://github.com/package/foo/tarball/master" } 

    Eu uso o seguinte com um repository privado do github:

     npm install github:mygithubuser/myproject 

    Muito simples –

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

    Na verdade, ele define registry = "https://path-to-your-registry" esta linha para / /Users//.npmrc

    Todo o valor que você definiu explicitamente ou foi definido por padrão pode ser visto por – npm config list