DailyJS

Node Roundup: npm-pkgr, Promised Land, Stash.js

Alex R. Young

Subscribe

@dailyjs

Facebook

Google+

node modules npm caching

Node Roundup: npm-pkgr, Promised Land, Stash.js

Posted by Alex R. Young on .
Featured

node modules npm caching

Node Roundup: npm-pkgr, Promised Land, Stash.js

Posted by Alex R. Young on .

npm-pkgr

npm-pkgr (GitHub: vvo / npm-pkgr, License: ISC, npm: npm-pkgr) by Vincent Voyer caches npm install results based on your package.json and npm-shrinkwrap.json files.

Depending on your set up, this should reduce the time taken to deploy Node projects. The basic usage is npm-pkgr instead of npm install, and npm-pkgr --production to use npm-shrinkwrap.json.

Promised Land

Promised Land (GitHub: FredyC / promised-land, License: MIT, npm: promised-land) provides a way of wrapping modules with an EventEmitter that allows you to use promises across your application.

For example, let's say you've got a module that connects to a database. Once the connection is ready, it does this:

var Land = require('promised-land');  
Land.emit('database:connected', db);  

Any other module that needs to know when the database is ready can now do so with promises:

var Land = require('promised-land');  
Land.promise('database:connected').then(function(db) {  
  doSomethingWithDatabase();
});

It also allows events to be repeated, in a stream-like way:

Land.stream('database:row').onValue(function(val) {  
  doSomethingRepeatedly();
});

The project has tests and more examples in the readme.

Stash.js

Stash.js (GitHub: tadeuzagallo / stash.js, License: MIT, npm: stash.js) by Tadeu Zagallo is a multilayer cache manager. That means you can define and use different storage systems for caching, based on "drivers".

So far the author has added a driver for ephemeral storage and localStorage support for browsers.

Cache items have methods for determining cache miss, locking, and setting values:

var stash = new Stash.Pool();  
var item = stash.getItem('my/key/path');  
var data = item.get();

if (item.isMiss()) {  
  item.lock();
  data = 'example';
  item.set(data, cacheDuration);
}

What lock does here is dependent on the cache policy. There are four policies that are explained in the readme.