github - user - npm repo




Como instalar um pacote npm diretamente do GitHub? (9)

Tentar instalar módulos do github resulta em:

Erro ENOENT no package.json.

Facilmente reproduzido usando express:

npm install https://github.com/visionmedia/express lança erro.

npm install express funciona.

Por que não consigo instalar a partir do github?

Aqui está a saída do console:

npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]ooglegroups.com>

npm ERR! System Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0

A forma geral da sintaxe é

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

o que significa que para o seu caso será

npm install git+ssh://[email protected]/visionmedia/express.git

De npmjs docs:

npm install:

Instala o pacote do provedor git hospedado, clonando-o com git. Para um URL remoto completo do git, apenas essa URL será tentada.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>

| #semver:] é um dos seguintes: git, git + ssh, git + http, git + https ou git + file.

Se # for fornecido, ele será usado para clonar exatamente o commit. Se o commit-ish tiver o formato #semver :, pode ser qualquer intervalo de semver ou versão exata válida, e o npm procurará por quaisquer tags ou refs correspondentes a esse intervalo no repositório remoto, da mesma forma que para uma dependência de registro. Se nem # ou

semver: é especificado e, em seguida, master é usado.

Se o repositório fizer uso de submódulos, esses submódulos também serão clonados.

Se o pacote que está sendo instalado contiver um script de preparação, suas dependências e devDependencies serão instaladas e o script de preparação será executado antes que o pacote seja empacotado e instalado.

As seguintes variáveis ​​de ambiente git são reconhecidas pelo npm e serão adicionadas ao ambiente ao executar o git:

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

Veja a página man do git para detalhes.

Exemplos:

npm install git+ssh://[email protected]:npm/npm.git#v1.0.27
npm install git+ssh://[email protected]:npm/npm#semver:^5.0
npm install git+https://[email protected]/npm/npm.git
npm install git://github.com/npm/npm.git#v1.0.27
GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git npm install

A resposta atual atual de Peter Lyons não é relevante em versões recentes do NPM. Por exemplo, usar o mesmo comando que foi criticado nesta resposta agora está bem.

$ npm install https://github.com/visionmedia/express

Se você continuou com problemas, pode ser um problema com o pacote que você estava usando.


Experimente este comando

 npm install github:[Organisation]/[Repository]#[master/BranchName] -g

este comando funcionou para mim.

 npm install github:BlessCSS/bless#3.x -g

Há também o npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH} para usar uma ramificação diferente.


Os métodos são cobertos muito bem agora na documentation bem como as inúmeras outras respostas aqui.

npm install git+ssh://[email protected]:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git>[#semver:^x.x]
npm install git+https://[email protected]/<githubname>/<githubrepo.git>
npm install git://github.com/<githubname>/<githubrepo.git>
npm install github:<githubname>/<githubrepo>[#<commit-ish>]

No entanto, algo notável que mudou recentemente é o npm adicionando o script de prepare para substituir o script de prepublish - prepublish . Isso corrige um problema de longa data em que os módulos instalados via git não prepublish script de prepublish - prepublish e, portanto, não concluíam as etapas de construção que ocorrem quando um módulo é publicado no registro npm. Veja https://github.com/npm/npm/issues/3055 .

É claro que os autores do módulo precisarão atualizar seu pacote.json para usar a nova diretiva de prepare para que isso comece a funcionar.


Porque https://github.com/visionmedia/express é o URL de uma página da web e não um módulo npm. Use este sabor:

git+https://[email protected]/visionmedia/express.git

ou este sabor se você precisar de SSH:

git+ssh://[email protected]/visionmedia/express.git

Você pode instalar diretamente um npm install github pelo comando npm install , assim: npm install https://github.com/futurechallenger/npm_git_install.git --save

NOTA: No repositório que será instalado pelo comando npm:

  1. talvez você tenha que ter uma pasta dist no repo, de acordo com o comentário do @Dan Dascalescu.
  2. Você definitivamente tem que ter um package.json em seu repo! que eu esqueço adicionar.

Você também pode fazer

npm i alex-cory/fasthacks

ou

npm i github:alex-cory/fasthacks

Basicamente:

npm i user_or_org/repo_name

UPDATE agora você pode fazer: npm install git://github.com/foo/bar.git
ou em package.json :

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}




node-modules