Another scenario we can think of it on a build server or CI server, where we need to cleanup the entire modules during each build process, and ‘npm install’ would be like a fresh start, would take longer time to have your build complete.
What if we have a simple way of caching these packages locally, so that we do not have to download again from Internet every-time. I will help you with a simple solution, that once setup will resolve some of these problems effectively.
local-npm is a Node server that acts as a local npm registry. It serves modules, caches them, and updates them whenever they change. Basically it’s a local mirror, but without having to replicate the entire npm registry.
This allows your
npm install commands to (mostly) work off-line. Also, your NPM modules get faster and faster over time, as commonly-installed modules are aggressively cached.
local-npm acts as a proxy between you and the main npm registry. You run
npm install commands like normal, but under the hood, all requests are sent through the local server.
Getting Started with Local-NPM:
Step 1: Install the module ‘local-npm’
[code lang=”js”]$ npm install –g local-npm[/code]
Step 2: launch local-npm and this will start the local npm server
[code lang=”js”]$ local-npm[/code]
This will start the local npm server at localhost:5080.
PS: Please note that, this step would take some time as this module tried to replicate the entire NPM repository remote skimdb to the local couchdb instance for efficient caching. But it will not eat up your disk space, as it caches modules based on usage only, it will not replicate the entire NPM repository.
Step 3: Validate the local-NPM registry
There is a basic NPMJS like UI to browse through local packages which can be accessed through.
Step 4: Then set
npm to point to the local server:
[code lang=”js”]$ npm set registry http://127.0.0.1:5080[/code]
Step 5: run “npm install” of your modules and you can see that local-NPM caches these modules that you regularly use.
Incase, to switch back to default NPMJS registry, you can do:
[code lang=”js”]$ npm set registry https://registry.npmjs.org[/code]
How it works?
npm is built on top of Apache CouchDB (a No-SQL db), so
local-npm works by replicating the full “skimdb” database to a local PouchDB Server.
You can inspect the running database at http://127.0.0.1:16984/_utils.
To understand more on local-NPM and documentation visit the module repository in github@https://github.com/local-npm/local-npm