1074

尝试从 GitHub 安装模块会导致此错误:

package.json 上的 ENOENT 错误。

使用 express 轻松复制:

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
4

19 回答 19

1407

因为https://github.com/visionmedia/express是网页的 URL 而不是 npm 模块。使用这种风味: git+{url}.git

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

或者如果你需要 SSH,可以使用这种风格:

git+ssh://git@github.com/visionmedia/express.git
于 2013-07-07T06:19:15.943 回答
770

您也可以npm install visionmedia/express从 GitHub 安装。

或者

npm install visionmedia/express#branch

还支持直接从 Gist、Bitbucket、GitLab 和许多其他专业格式安装。查看所有npm install文档

于 2014-02-20T20:15:46.153 回答
204

如果没有安装Git,我们可以试试:

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
于 2015-09-07T10:15:21.540 回答
83

截至 2016 年 9 月,从 vanilla HTTPS GitHub URL 安装现在可以工作:

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

您不能对所有模块执行此操作,因为您正在从源代码控制系统中读取,该系统很可能包含无效/未编译/错误代码。所以要明确一点(尽管应该不言而喻):鉴于存储库中的代码处于 npm-usable 状态,您现在可以非常愉快地直接从 GitHub 安装。

2019 年 10 月,我们现在生活在“ TypeScript / React / Babel ”的高峰期,因此 JavaScript 编译变得相当普遍。如果您需要考虑编译,请查看prepare. 也就是说,NPM 模块不需要编译明智的做法是假设编译不是默认的,尤其是对于较旧的节点模块(也可能对于非常新的、前沿的“ESNext”-y 模块)。

于 2016-09-14T12:07:15.770 回答
59

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

于 2016-05-18T09:38:00.620 回答
55

这些方法现在在npm 的安装文档以及此处的众多其他答案中得到了很好的介绍。

npm install git+ssh://git@github.com:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://git@github.com:<githubname>/<githubrepo.git>[#semver:^x.x]
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脚本来替换prepublish脚本。 这解决了一个长期存在的问题,即通过 Git 安装的模块没有运行prepublish脚本,因此没有完成将模块发布到 npm 注册表时发生的构建步骤。请参阅为 Git URL 包运行预发布 #3055

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

于 2017-07-18T02:47:49.437 回答
43

Peter Lyons当前的最佳答案与最近的 NPM 版本无关。例如,现在可以使用在此答案中被批评的相同命令。

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

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

于 2016-05-02T16:08:49.700 回答
27

语法的一般形式是

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

这意味着你的情况将是

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

来自 npmjs 文档:

npm 安装:

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

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

| #semver:] 是 git、git+ssh、git+http、git+https 或 git+file 之一。

如果提供 # ,它将用于准确克隆该提交。如果 commit-ish 的格式为 #semver:,则可以是任何有效的 semver 范围或确切版本,npm 将在远程存储库中查找与该范围匹配的任何标记或引用,就像它查找注册表依赖项一样。如果 # 或

semver: 指定,然后使用master。

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

如果正在安装的包包含准备脚本,则将安装其依赖项和 devDependencies,并在打包和安装包之前运行准备脚本。

以下 git 环境变量被 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
于 2017-08-06T00:12:24.840 回答
24

你可以做:

npm install git://github.com/foo/bar.git

或在package.json

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}
于 2017-01-26T00:06:21.817 回答
15

直接安装:

npm install visionmedia/express

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

npm install
于 2016-07-06T05:19:51.060 回答
11

你也可以做

npm i alex-cory/fasthacks

或者

npm i github:alex-cory/fasthacks

基本上:

npm i user_or_org/repo_name
于 2016-06-07T21:54:52.387 回答
10

这对我有用,而且打字更少。

npm i github:<UserName>/<RepoName>

package.json

{
    "dependencies": {
        "name": "github:<UserName>/<RepoName>"
    }
}
于 2021-10-09T02:31:07.357 回答
8

您可以通过命令直接安装一个 GitHub 存储库npm install,如下所示:

npm install https://github.com/futurechallenger/npm_git_install.git --save

注意:在将由 npm 命令安装的存储库中:

  1. 根据Dan Dascalescu 的评论,也许您的存储库中必须有一个dist文件夹。
  2. 你肯定必须在你的存储库中有一个package.json!我忘记添加了。
于 2017-03-07T03:05:12.137 回答
7

简单的:

npm install *GithubUrl*.git --save

例子:

npm install https://github.com/visionmedia/express.git --save
于 2019-07-08T07:40:48.270 回答
2

我试过npm install git+https://github.com/visionmedia/express了,但这花了太长时间,我不确定这会奏效。

对我有用的是 - yarn add git+https://github.com/visionmedia/express

于 2019-08-21T10:36:48.513 回答
2

下面的代码对我有用,可以从 github 存储库安装:

npm install git+ssh://<your_repository_ssh_clone_link>#<branch_name_if_any>

您可以获得 ssh 克隆链接,如下所示:

ssh 克隆截图

所以对于上面的截图存储库,你可能需要如下导入,

npm install git+ssh://git@github.com:Siddhu2/calculator-chatbot.git#master

其中 master 是我的分支,它是可选的,因为我只有一个分支。

于 2021-10-10T15:40:26.880 回答
1

如果你得到这样的东西:

npm 错误!enoent 未定义 ls-remote -h -t https://github.com/some_repo/repo.git

确保你更新到最新的 npm 并且你也有权限。

于 2021-02-24T17:01:37.640 回答
1

唯一对我有用的命令是npm i MY_PACKAGE_NAME:MY_REPOSITORY#BRANCH_NAME

于 2021-12-14T20:54:43.663 回答
-3

试试这个命令:

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

这个命令对我有用:

 npm install github:BlessCSS/bless#3.x -g
于 2016-07-11T10:33:25.690 回答