如何直接从GitHub安装npm包

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

关于package.json.的ENOENT错误

使用Express轻松复制:

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

npm install express 工作。

为什么我不能从GitHub安装?

这是控制台输出:

npm http GET https://github.com/visionmedia/express.gitnpm http 200 https://github.com/visionmedia/express.gitnpm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgznpm 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-genericnpm 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/somenamenpm ERR! node -v v0.10.10npm ERR! npm -v 1.2.25npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.jsonnpm ERR! code ENOENTnpm ERR! errno 34npm ERR!npm ERR! Additional logging details can be found in:npm ERR!     /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.lognpm ERR! not ok code 0
751658 次浏览

因为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

要从GitHub安装,您还可以执行

npm install visionmedia/express

npm install visionmedia/express#branch

还支持直接从Gist、BitBay、GitLab和许多其他专业格式安装。看看它们的#0留档

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

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master

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

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

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

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

你也可以做

npm i alex-cory/fasthacks

npm i github:alex-cory/fasthacks

基本上:

npm i user_or_org/repo_name

直接安装:

npm install visionmedia/express

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

npm install

试试这个命令:

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

这个命令对我有用:

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

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

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

你不能对所有模块都这样做,因为你是从源代码控制系统读取的,其中很可能包含无效/未编译/错误的代码。所以要清楚(尽管它应该不用说):假设存储库中的代码处于npm可用状态,你现在可以很高兴地直接从GitHub安装。

在2019年10月,我们现在正经历着“峰值TypeScript/React/巴别塔”,因此JavaScript编译已经变得相当普遍。如果你需要考虑编译,请查看prepare。也就是说,NPM模块不需要编译,假设编译不是默认值是明智的,特别是对于较旧的节点模块(可能也适用于非常新的、前沿的“ESNext”-y模块)。

你可以这样做:

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

package.json中:

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

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

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

注:在将通过npm命令安装的存储库中:

  1. 根据Dan Dascalescu的评论,也许您必须在存储库中拥有dist文件夹。
  2. 你肯定必须在你的存储库中有一个package.json!我忘记添加了。

这些方法现在在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添加了#0脚本来替换#1脚本。这修复了一个长期存在的问题,即通过Git安装的模块没有运行prepublish脚本,因此没有完成将模块发布到npm注册表时发生的构建步骤。参见为Git URL包运行预发布#3055

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

语法的一般形式是

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

这意味着对你的案子来说

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

来自npmjs文档:

npm安装:

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

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

|#semver:]是git、git+ssh、git+超文本传输协议之一,git+https,或git+文件。

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

semver:指定,则使用master。

如果存储库使用子模块,则这些子模块将是也可以克隆

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

以下git环境变量被npm识别并将运行git时添加到环境中:

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFOGIT_SSL_NO_VERIFY

有关详细信息,请参阅git man页面。

示例:

npm install git+ssh://git@github.com:npm/npm.git#v1.0.27npm install git+ssh://git@github.com:npm/npm#semver:^5.0npm install git+https://isaacs@github.com/npm/npm.gitnpm install git://github.com/npm/npm.git#v1.0.27GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://git@github.com:npm/npm.git npm install

简单:

npm install *GithubUrl*.git --save

示例:

npm install https://github.com/visionmedia/express.git --save

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

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

如果你得到这样的东西:

npm ERR! enoent未定义的ls-远程-h-thttps://github.com/some_repo/repo.git

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

这对我来说很有效,而且打字更少。

npm i github:<UserName>/<RepoName>

package.json

{"dependencies": {"name": "github:<UserName>/<RepoName>"}}

下面的代码让我从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是我的分支,它是可选的,因为我只有一个分支。

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

有时我需要从特定的分支或提交安装。为了简单起见,我只使用https://gitpkg.vercel.app/

在此处输入图片描述

不需要做太多;这帮助了我:

Yarn add <git_name>:<github_name>/<Repository_name>.git

示例:

yarn add git@github.com:myGitHub/dynamic-checkbox-input.git

如果您想添加一些特定的提交或分支名称,请添加#

示例:

yarn add git@github.com:myGitHub/dynamic-checkbox-input.git#master

示例:

yarn add git@github.com:myGitHub/dynamic-checkbox-input.git#c978U57