Como usar o repositório particular do Github como dependência do npm

203

Como listar um repositório particular do Github como um "dependency"in package.json? Tentei as sintaxes de URLs do Github do npmryanve/example , mas fazer npm installna pasta do pacote dá erros "não foi possível instalar" para as dependências particulares. Existe uma sintaxe especial (ou algum outro mecanismo) para depender de repositórios particulares?

ryanve
fonte

Respostas:

284

Isso pode ser feito via https e oauth ou ssh.

https e oauth: crie um token de acesso com escopo "repo" e use esta sintaxe :

"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"

ou

ssh: setup ssh e use esta sintaxe:

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"

(observe o uso de dois pontos em vez de barra antes do usuário)

ryanve
fonte
19
Ou se você tiver o ssh configurado no github, pule o token e use: "<package>": "git+ssh://[email protected]/<user>/<repo>.git
steveax 26/02/15
3
Como você o coloca sempre na versão mais recente?
Sir Codealot
25
Adicionar #master até o fim
Jasmine Hegman
4
"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"não funcionou para mim. Surpreendentemente, a troca de token e x-oauth-basic fez o trabalho. Então, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"funciona para mim. observe que estou no gitlab e não no github.
misantronic
2
Ao longo httpscolocando x-oauth-basiccomo o nome de usuário não é necessária: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"funciona tão bem.
Kadam # 21/18
25

Se alguém estiver procurando por outra opção para o Git Lab e as opções acima não funcionarem, então temos outra opção. Para uma instalação local do servidor Git Lab, descobrimos que a abordagem abaixo permite incluir a dependência do pacote. Geramos e usamos um token de acesso para fazer isso.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

Obviamente, se alguém estiver usando uma chave de acesso dessa maneira, deverá ter um conjunto limitado de permissões.

Boa sorte!

Steve M
fonte
8

Com o git, existe um formato https

https://github.com/equivalent/we_demand_serverless_ruby.git

Este formato aceita Usuário + senha

https://bot-user:[email protected]/equivalent/we_demand_serverless_ruby.git

Então, o que você pode fazer é criar um novo usuário que será usado apenas como um bot , adicionar apenas permissões suficientes para que ele possa ler o repositório que você deseja carregar nos módulos NPM e apenas tê-lo diretamente em seu packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

Na parte Selecionar escopos, verifique o repo : Controle total de repositórios privados

Isso é para que o token possa acessar repositórios particulares que o usuário possa ver

Agora crie um novo grupo em sua organização, adicione esse usuário ao grupo e adicione apenas repositórios que você espera que sejam puxados dessa maneira (permissão LEIA SOMENTE!)

Você precisa garantir que essa configuração seja enviada apenas para repositório particular

Em seguida, você pode adicioná-lo ao seu / packages.json (usuário-bot é o nome do usuário, xxxxxxxxx é o token pessoal gerado)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:[email protected]/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html

equivalente8
fonte
1
Portanto, é seguro confirmar esse token de acesso pessoal e usá-lo em algo como o Travis CI?
Con Antonakos
@ConAntonakos se o projeto é um repositório privado do Github e você pagou o Travis CI que está executando seu repositório de projetos privado do Github, então sim (tipo, como você não compartilha suas credenciais publicamente) Outra coisa a lembrar é que você precisa criar e usar credenciais do novo usuário do Github que tem acesso de leitura apenas a este repositório particular. Portanto, não use sua conta pessoal :) ... crie uma conta de usuário bot que seja mais fácil de bloquear em caso de exposição;) ... Se você estiver criando um projeto bancário, isso não passará na certificação ISO; portanto, nunca, nunca segura não até mesmo armazenar código em GH
equivalent8