Npm sounds like a great platform to use within an organization, curious if a private repo is possible, like with Nexus/Maven. Nothing comes up on Google :(
This question is related to
node.js
repository
npm
Verdaccio is what I was looking for and it deserves it's own answer ;) It is an actively maintained fork of Sinopia (highly upvoted answer here). It is a npm registry as a npm package, and can be found
here: https://github.com/verdaccio/verdaccio,
here: https://www.verdaccio.org,
and on port number: 4873
npm i -g verdaccio pm2
pm2 start --name verdaccio `which verdaccio`
pm2 save
docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
helm repo add verdaccio https://charts.verdaccio.org
helm repo update
helm install verdaccio/verdaccio
I guess this thread needs an update. If you look at any of the npm registries which are available, they are extremely heavy and they need couchdb. Gemfurry and others need you to fork off from public repos. Some of the npm's like shadow-npm have no recent commits.
Then, we found Reggie. Its got a good commit activity, extremely easy to install and use and has pretty good community support. Its extremely light-weight and you don't have to deal with couchdb, etc.
Forgive me if I don't understand your question well, but here's my answer:
You can create a private npm module and use npm's normal commands to install it. Most node.js users use git as their repository, but you can use whatever repository works for you.
Once your package is made, then use
npm install *tarball_url*
https://github.com/isaacs/npmjs.org/ : In npm version v1.0.26 you can specify private git repositories urls as a dependency in your package.json files. I have not used it but would love feedback. Here is what you need to do:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://[email protected]:my-app.git#v0.0.1",
}
}
The following post talks about this: Debuggable: Private npm modules
A little late to the party, but NodeJS (as of ~Nov 14 I guess) supports corporate NPM repositories - you can find out more on their official site.
From a cursory glance it would appear that npmE allows fall-through mirroring of the NPM repository - that is, it will look up packages in the real NPM repository if it can't find one on your internal one. Seems very useful!
npm Enterprise is an on-premises solution for securely sharing and distributing JavaScript modules within your organization, from the team that maintains npm and the public npm registry. It's designed for teams that need:
easy internal sharing of private modules better control of development and deployment workflow stricter security around deploying open-source modules compliance with legal requirements to host code on-premises npmE is private npm
npmE is an npm registry that works with the same standard npm client you already use, but provides the features needed by larger organizations who are now enthusiastically adopting node. It's built by npm, Inc., the sponsor of the npm open source project and the host of the public npm registry.
Unfortunately, it's not free. You can get a trial, but it is commerical software. This is the not so great bit for solo developers, but if you're a solo developer, you have GitHub :-)
Repository managers with support for private npm registries:
You can also use Aragon Package Manager if you prefer a decentralized approach:
This post talks about how to setup a private registry
Replicating npmjs.org use the following command
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"
Note there is "continuous":true
in the command, this utilises CouchDB’s _changes API and will pull any new changes when this API is notified.
If you ever want to stop these replications, you can easily add "cancel":true
. Then the script would be
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"
Then go to npmjs.org readme to install npm (make sure nodejs
and git
is installed). Blow is all the steps
git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp
npm install couchapp
npm install semver
couchapp push registry/app.js http://localhost:5984/registry
couchapp push www/app.js http://localhost:5984/registry
On 14th of April (2015), npm private modules were introduced.
When you pay for private modules, you can:
- Host as many private packages as you want
- Give read access or read-write access for those packages to any other paid user
- Install and use any packages that other paid users have given you read access to
- Collaborate on any packages that other paid users have given you write access to
Of course it's not free - currently 7$ a month, per user.
And it's still a pretty new service. For example support for organization accounts is missing (as of June 2015):
Currently, private packages are only available for individual users, but support for organization accounts is coming soon. Feel free to create a user for your organization in the meantime, and we can upgrade it to an organization when support is here.
So while not perfect, it's the official npm solution to maintaining private packages, and that itself makes it worth mentioning.
UPDATE
Npm Private Packages are now available, with plans for both individual users and organizations:
- Unlimited number of public & private packages
- $7/month/developer
- Includes one scope name, based on organization name
- Publish and control access to @org-name/foo
(disclaimer: not even remotely affiliated in any way with npm, Inc.)
There is an easy to use npm package to do this. https://www.npmjs.org/package/sinopia
In a nutshell, Sinopia is a private/caching npm repository server that you can setup with zero configuration.
Sinopia can be used to :
This is the easiest way I know - host it in the cloud with the Gemfury private npm registry.
It's free and you can log in with your Github account. It should save you a lot of time, compared to setting up your own database.
I might be a little late to the party but any of these two might work for you:
Source: Stackoverflow.com