如何直接从GitHub安装npm包?

试图从github安装模块会导致:

package.json上的ENOENT错误。

轻松使用快递转载:

npm install https://github.com/visionmedia/express抛出错误。

npm install express作品。

为什么我不能从github安装?

这里是控制台输出:

 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! <npm-@googlegroups.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 

因为https://github.com/visionmedia/express是网页的URL而不是npm模块。 使用这个味道:

 git+https://git@github.com/visionmedia/express.git 

或者这个味道,如果你需要SSH:

 git+ssh://git@github.com/visionmedia/express.git 

你也可以做npm install visionmedia/express

要么

 npm install visionmedia/express#branch 

还支持直接从gist,bitbucket,gitlab和其他一些专门的格式进行安装。 看看他们所有的npm install 文档 。

如果没有安装git,那么我们可以试试npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master

还有npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}来使用不同的分支。

彼得里昂目前的最佳答案与最近的NPM版本无关。 例如,使用在这个答案中被批评的命令现在好了。

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

如果问题继续存在,则可能是您使用的任何软件包有问题。

更新九月2016年

从香草https githuburl安装现在似乎工作:

 npm install https://github.com/fergiemcdowall/search-index.git 

编辑:有几个用户评论说,你不能这样做的所有模块,因为你正在从一个源代码pipe理系统,这可能包含无效/未编译/错误的代码阅读。 所以要清楚(尽pipe它应该不言而喻): 鉴于repo中的代码是在一个npm可用的状态 ,你现在可以很高兴地直接从github安装

直接安装:

 npm install visionmedia/express 

或者,您可以在package.json文件的"dependencies"部分添加"express": "github:visionmedia/express" ,然后运行:

 npm install 

你也可以做

 npm i alex-cory/fasthacks 

要么

 npm i github:alex-cory/fasthacks 

基本上:

 npm i user_or_org/repo_name 

更新现在你可以这样做: npm install git://github.com/foo/bar.git
或者在package.json

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

这些方法在npm的安装文档中以及许多其他的答案都覆盖得很好。

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

然而,最近发生了一些变化的是npm添加prepare脚本来replaceprepublish脚本。 这解决了一个长期存在的问题,通过git安装的模块没有运行prepublish脚本,因此没有完成将模块发布到npmregistry时发生的构build步骤。 请参阅https://github.com/npm/npm/issues/3055

当然,模块作者需要更新他们的package.json来使用新的prepare指令来开始工作。

您可以通过npm install命令直接安装github repo,如下所示: npm install https://github.com/futurechallenger/npm_git_install.git --save

注意:在将由npm命令安装的repo中:

  1. 根据@Dan Dascalescu的评论,也许你必须在你的回购中有一个dist文件夹。
  2. 你必须有一个package.json在你回购! 我忘了添加。

语法的一般forms是

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

这意味着你的情况将是

 npm install git+ssh://git@github.com/visionmedia/express.git 

从npmjs文档:

npm安装:

从托pipe的git提供程序中安装包,用git克隆它。 对于完整的git远程URL,只会尝试使用该URL。

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

| #semver:]是git,git + ssh,git + http,git + https或者git +文件之一。

如果提供了#,它将被用来克隆那个提交。 如果commit-ish的格式为#semver :,可以是任何有效的semver范围或精确的版本,npm将查找远程存储库中与该范围匹配的任何标签或引用,就像registry依赖关系一样。 如果既不#

semver:被指定,然后使用master。

如果存储库使用子模块,那么这些子模块也将被克隆。

如果正在安装的软件包包含一个准备脚本,则将安装它的依赖关系和devDependencies,并在打包和安装该软件包之前运行准备脚本。

以下git环境variables可以被npm识别,并且在运行git时会被添加到环境中:

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

有关详细信息,请参阅git手册页。

例子:

 npm install git+ssh://git@github.com:npm/npm.git#v1.0.27 npm install git+ssh://git@github.com:npm/npm#semver:^5.0 npm install git+https://isaacs@github.com/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://git@github.com:npm/npm.git npm install 

试试这个命令

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

这个命令为我工作。

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