Using the European npm mirror
If you are located in Europe the European npm mirror is fast and reliable. With a few tweaks you can easily publish to the main registry too.
The mighty Maciej Malecki created a European npm mirror for all the Node.js developers this side of the Atlantic. It is much faster to install packages from and takes some load off the main registry.
Here are some stats™ on installing the yeoman-generator module.
npm install --registry http://registry.npmjs.org yeoman-generator 10.09s user 1.62s system 47% cpu 24.473 total
npm install --registry http://registry.npmjs.eu yeoman-generator 6.10s user 1.11s system 34% cpu 20.903 total
So 6.10 seconds in Europe, 10.09 seconds from the main registry. Four seconds faster.
You can start using the European mirror right away by running a single command.
npm config set registry http://registry.npmjs.eu
This will update your .npmrc
to include the following line
registry = http://registry.npmjs.eu/
Now when you run npm install
if you haven’t disabled verbose logging you’ll
see the http calls going out to the European mirror.
npm http GET http://registry.npmjs.eu/argparse
npm http GET http://registry.npmjs.eu/glob
..
Publishing ¶
You cannot publish to the European mirror - it is read only. This means there is a little bit of work to do when you want to publish a module. There are a couple of ways to achieve this. You can simply specify the registry when you publish
npm publish --registry http://registry.nodejs.org
Or you can set this in your package.json
file
"publishConfig": {
"registry":"http://registry.npmjs.org/"
}
nrm ¶
If you frequently want to switch modules the nrm module may help.
$ nrm ls
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
eu ----- http://registry.npmjs.eu/
au ----- http://registry.npmjs.org.au/
sl ----- http://npm.strongloop.com/
nj ----- https://registry.nodejitsu.com/
$ nrm use cnpm //switch registry to cnpm
Thanks to hemanth.hm for this tip.
Conclusion ¶
If you are in Europe enjoy a faster, sexier npm experience by switching to the European registry! You can also bask in the warm glow of being a good npm citizen by taking some load off the main repository.
Given CouchDB’s excellent replication capabilities it would be nice to see more mirrors popping up. You could even write a proxy in front of the mirrors to make sure you always have a service available.
Tags
Can you help make this article better? You can edit it here and send me a pull request.
See Also
-
Making the case for make
Make gives you access to many tiny, powerful UNIX tools and shouldn't be overlooked as a build tool. -
Command Line Utilities with Node.js
Node.js is a great platform for creating small command line utilities, especially where I/O occurs. -
Continuously deploy Node apps with GitHub, Travis and Heroku
GitHub, Travis and Heroku make it simple to build a continuous deployment pipeline for Node.js applications. Here is a walkthrough.