可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Trying to install modules from github results in:
ENOENT error on package.json.
Easily reproduced using express:
npm install https://github.com/visionmedia/express
throws error.
npm install express
works.
Why can\'t I install from github?
Here is the console output:
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
回答1:
Because https://github.com/visionmedia/express
is the URL of a web page and not an npm module. Use this flavor:
git+https://git@github.com/visionmedia/express.git
or this flavor if you need SSH:
git+ssh://git@github.com/visionmedia/express.git
回答2:
You can also do npm install visionmedia/express
to install from Github
or
npm install visionmedia/express#branch
There is also support for installing directly from a Gist, Bitbucket, Gitlab, and a number of other specialized formats. Look at the npm install
documentation for them all.
回答3:
If git is not installed, we can try
npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
回答4:
There\'s also npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}
to use a different branch.
回答5:
UPDATE sept 2016
Installing from vanilla https github URLs now seems to work:
npm install https://github.com/fergiemcdowall/search-index.git
EDIT: there are a couple of users commenting that you cant do this for all modules because you are reading from a source control system, which may well contain invalid/uncompiled/buggy code. So to be clear (although it should go without saying): given that the code in the repo is in an npm-usable state, you can now quite happily install directly from github
回答6:
The current top answer by Peter Lyons is not relevant with recent NPM versions. For example, using the same command that was criticized in this answer is now fine.
$ npm install https://github.com/visionmedia/express
If you have continued problems it might be a problem with whatever package you were using.
回答7:
The methods are covered pretty well now in npm\'s install documentation as well as the numerous other answers here.
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>]
However, something notable that has changed recently is npm adding the prepare
script to replace the prepublish
script. This fixes a longstanding problem where modules installed via git did not run the prepublish
script and thus did not complete the build steps that occur when a module is published to the npm registry. See https://github.com/npm/npm/issues/3055.
Of course, the module authors will need to update their package.json to use the new prepare
directive for this to start working.
回答8:
Install it directly:
npm install visionmedia/express
Alternatively, you can add \"express\": \"github:visionmedia/express\"
to the \"dependencies\"
section of package.json
file, then run:
npm install
回答9:
The general form of the syntax is
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
which means for your case it will be
npm install git+ssh://git@github.com/visionmedia/express.git
From npmjs docs:
npm install :
Installs the package from the hosted git provider, cloning it with
git. For a full git remote url, only that URL will be attempted.
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>
| #semver:] is one of git, git+ssh, git+http,
git+https, or git+file.
If # is provided, it will be used to clone exactly that
commit. If the commit-ish has the format #semver:,
can be any valid semver range or exact version, and npm will look for
any tags or refs matching that range in the remote repository, much as
it would for a registry dependency. If neither # or
semver: is specified, then master is used.
If the repository makes use of submodules, those submodules will be
cloned as well.
If the package being installed contains a prepare script, its
dependencies and devDependencies will be installed, and the prepare
script will be run, before the package is packaged and installed.
The following git environment variables are recognized by npm and will
be added to the environment when running git:
- GIT_ASKPASS
- GIT_EXEC_PATH
- GIT_PROXY_COMMAND
- GIT_SSH
- GIT_SSH_COMMAND
- GIT_SSL_CAINFO GIT_SSL_NO_VERIFY
See the git man page for details.
Examples:
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
回答10:
You could also do
npm i alex-cory/fasthacks
or
npm i github:alex-cory/fasthacks
Basically:
npm i user_or_org/repo_name
回答11:
UPDATE now you can do: npm install git://github.com/foo/bar.git
or in package.json
:
\"dependencies\": {
\"bar\": \"git://github.com/foo/bar.git\"
}
回答12:
You can directly install an github repo by npm install
command, like this:
npm install https://github.com/futurechallenger/npm_git_install.git --save
NOTE: In the repo which will be installed by npm command:
- maybe you have to have a dist folder in you repo, according to @Dan Dascalescu\'s comment.
- You definitely have to have a package.json in you repo! which I forget add.
回答13:
Try this command
npm install github:[Organisation]/[Repository]#[master/BranchName] -g
this command worked for me.
npm install github:BlessCSS/bless#3.x -g