power-assets

Assets pipeline

Power Assets

Power Assets is a assets pipeline for express.

npm install --save power-assets
  • sets the correct headers for production
  • gzip compression
  • cache busting name generation
  • dev mode where ondisk changes are auto bundled.
  • Less
  • Browserify
    • debowerify
    • reactify
    • uglify

For LESS CSS asset. Options are passed through to LESS compiler.

"cssAssetConf": {
  "url": "/main.css",         // server endpoint 
  "entry": "app/stylesheets/main.less", // less entry 
  "cleancss": false,          // use cleancss 
  "sourceMap": true,
  "outputSourceFiles": true,
  "strictMath": true,
  "strictUnit": true,
  "ieCompat": false,
  "compress": false,        // gzip output 
  "watch": true,            // watch for changes 
  "hash": false,            // cachebusting url 
  "copyright": "/* © 2014 QUILLU INC. */", // preprend copywright 
  "maxAge": 0
}

For Browserify JS asset. Options are passed through to Browserify.

"jsAssetConf": {
  "url": "/main.js",        // server endpoint 
  "entry": "app/client.js", // browserify entry 
  "minify": false, // Run bundle through uglify 
  "insertGlobals": true,
  "transforms": ["debowerify", "reactify"],
  "debug": true,
  "compress": false,        // gzip output 
  "watch": true,            // watch for changes 
  "hash": false,            // cachebusting url 
  "copyright": "/* © 2014 QUILLU INC. */", //prepend copyright 
  "maxAge": 0
}

Then create asset rack

var assets = require('power-assets');
 
// - LESS CSS 
var cssAsset = new assets.LessAsset(cssAssetConf);
 
cssAsset.on('ready', function() {
  console.log('CSS asset complete');
});
 
if (cssAssetConf.watch) {
  cssAsset.on('error', function(err) {
    console.log(err);
  });
}
 
// - Browserify Javascript 
var jsAsset = new assets.BrowserifyAsset(jsAssetConf);
 
jsAsset.on('ready', function() {
  console.log('JS asset complete');
});
 
if (jsAssetConf.watch) {
  jsAsset.on('error', function(err) {
    console.log(err);
  });
}
 
// Construct a rack with many individual assets 
var rack = assets.rack([cssAsset, jsAsset]);
 
// Add as middleware to Express server 
server.use(rack);

Inspired by various asset pipeline systems.

Create Github issues for all bugs, features & requests. Pull requests are welcome.

Test with npm test

BSD 3-Clause