可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I\'ve taken some shared code and put it in an NPM module, one I don\'t want to upload to the central registry. The question is, how do I install it from other projects?
The obvious way is probably to set up my own NPM registry, but according to the documentation, that involves a lot of hassle.
Can I just install an NPM module that sits on the local filesystem, or perhaps even from git?
npm install --from-git git@server:project
回答1:
cd somedir
npm install .
or
npm install path/to/somedir
somedir
must contain the package.json
inside it.
It knows about git too:
npm install git://github.com/visionmedia/express.git
回答2:
In your private npm modules add
\"private\": true
to your package.json
Then to reference the private module in another module, use this in your package.json
{
\"name\": \"myapp\",
\"dependencies\": {
\"private-repo\": \"git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0\",
}
}
回答3:
Can I just install an NPM package that sits on the local filesystem, or perhaps even from git?
Yes you can! From the docs https://docs.npmjs.com/cli/install
A package is:
- a) a folder containing a program described by a package.json file
- b) a gzipped tarball containing (a)
- c) a url that resolves to (b)
- d) a
<name>@<version>
that is published on the registry with (c)
- e) a
<name>@<tag>
that points to (d)
- f) a
<name>
that has a \"latest\" tag satisfying (e)
- g) a
<git remote url>
that resolves to (b)
Isn\'t npm brilliant?
回答4:
Update January 2016
In addition to other answers, there is sometimes the scenario where you wish to have private modules available in a team context.
Both Github and Bitbucket support the concept of generating a team API Key. This API key can be used as the password to perform API requests as this team.
In your private npm modules add
\"private\": true
to your package.json
Then to reference the private module in another module, use this in your package.json
{
\"name\": \"myapp\",
\"dependencies\": {
\"private-repo\":
\"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git\",
}
}
where team name = myteamname, and API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
Here I reference a bitbucket repo, but it is almost identical using github too.
Finally, as an alternative, if you really don\'t mind paying $7 per month (as of writing) then you can now have private NPM modules out of the box.
回答5:
FWIW: I had problems with all of these answers when dealing with a private organization repository.
The following worked for me:
npm install -S \"git+https://username@github.com/orgname/repositoryname.git\"
For example:
npm install -S \"git+https://blesh@github.com/netflix/private-repository.git\"
I\'m not entirely sure why the other answers didn\'t work for me in this one case, because they\'re what I tried first before I hit Google and found this answer. And the other answers are what I\'ve done in the past.
Hopefully this helps someone else.
回答6:
I had this same problem, and after some searching around, I found Reggie (https://github.com/mbrevoort/node-reggie). It looks pretty solid. It allows for lightweight publishing of NPM modules to private servers. Not perfect (no authentication upon installation), and it\'s still really young, but I tested it locally, and it seems to do what it says it should do.
That is... (and this just from their docs)
npm install -g reggie
reggie-server -d ~/.reggie
then cd into your module directory and...
reggie -u http://<host:port> publish
reggie -u http://127.0.0.1:8080 publish
finally, you can install packages from reggie just by using that url either in a direct npm install command, or from within a package.json... like so
npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0
or..
dependencies: {
\"foo\": \"http://<host:port>/package/foo/1.0.0\"
}
回答7:
Structure your code in an accessible fashion like below. If this is possible for you.
Within MainApp @ NodProjs\\Apps\\MainApp\\
npm install --S ../../Modules/DataModule
You may need to update package.json as:
\"dependencies\": {
\"datamodule\": \"../../Modules/DataModule\"
}
This worked for my situation.
回答8:
Starting with arcseldon\'s answer, I found that the team name was needed in the URL like so:
npm install --save \"git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git\"
And note that the API key is only available for the team, not individual users.
回答9:
Npm now provides unlimited private hosted modules for $7/user/month used like so
cd private-project
npm login
in your package json set \"name\": \" @username/private-project\"
npm publish
then to require your project:
cd ../new-project
npm install --save @username/private-project
回答10:
Config to install from public Github repository, even if machine is under firewall:
dependencies: {
\"foo\": \"https://github.com/package/foo/tarball/master\"
}
回答11:
I use the following with a private github repository:
npm install github:mygithubuser/myproject
回答12:
Very simple -
npm config set registry https://path-to-your-registry/
It actually sets registry = \"https://path-to-your-registry\"
this line to /Users/<ur-machine-user-name>/.npmrc
All the value you have set explicitly or have been set by default can be seen by - npm config list
回答13:
This was what I was looking for:
# Get the latest from GitHub, public repo:
$ npm install username/my-new-project --save-dev
# Bitbucket, private repo:
$ npm install git+https://token:x-oauth-basic@github.com/username/my-new-project.git#master
$ npm install git+ssh://git@github.com/username/my-new-project.git#master
# … or from Bitbucket, public repo:
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master --save-dev
# Bitbucket, private repo:
$ npm install git+https://username:password@bitbucket.org/username/my-new-project.git#master
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master
# Or, if you published as npm package:
$ npm install my-new-project --save-dev