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?

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>:x-oauth-basic@github.com/<user>/<repo>.git"

ou

ssh: setup ssh e use esta sintaxe:

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

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


19
Ou se você tiver o ssh configurado no github, pule o token e use: "<package>": "git+ssh://git@github.com/<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>:x-oauth-basic@github.com/<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!


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:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/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:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.