aspax-express v0.7.7
What's this?
A module that enables Express.js to serve assets built and packaged by ASPAX.
Installation
Run this in your application folder:
npm install aspax-express --saveUsage
Quick steps:
Create a folder structure similar to this one for your project:
/assets -> asset sources /server -> main Express.js application folder /server/public -> public static folderNotice: put all your asset sources in
/assets; don't put anything in/server/public, as it will be overwritten.Create
/assets/aspax.ymldescribing your assets configuration:js/app.js|fp|min: - lib/bootstrap/js/bootstrap.js - lib/moment.js - lib/jade/runtime.js - scripts/namespaces.coffee|bare - templates/now.jade - scripts/index.ls|bare css/app.css|fp|min: - lib/bootstrap/css/bootstrap.css - lib/bootstrap/css/bootstrap-theme.css - styles/index.styl|nib favicon.png: images/favicon.png ...Install ASPAX globally if you haven’t already, install aspax-express in your application, and also make sure to install any necessary source handling plugins:
# Global ASPAX npm install aspax -g cd server # ASPAX-Express npm install aspax-express --save # Source handling plugins npm install aspax-coffee-handler --save-dev npm install aspax-ls-handler --save-dev npm install aspax-jade-handler --save-dev npm install aspax-styl-handler --save-devAdd
require('aspax-express')(app, path.join(__dirname, 'aspax.json'))before handling views in your main application script (usually/server/app.js):var express = require('express') , app = express(); ... require('aspax-express')(app, path.join(__dirname, 'aspax.json')); app.use app.router; app.get('/:page', function(req, res) { ... });Wrap the URLs in your views into
asset()function calls://- link(rel="shortcut icon", href="/favicon.png") link(rel="shortcut icon", href=asset('favicon.png'))Then, in your
/serverfolder you can run:# watch and build on-the-fly during development aspax -s ../client watch # build for development aspax -s ../client build # pack for production (will compile, concat, minify and fingerprint) aspax -s ../client pack # clean everything aspax -s ../client cleanRun your application in development or production mode:
# development # NODE_ENV=development node start.js # ...or NODE_ENV=development nodemon -e js,json,coffee -x node # production # NODE_ENV=production node start.jsNotice: if you're using
nodemonin development mode, addaspax.jsonto.nodemonignoreto avoid restarting the application whenever an asset is rebuilt.
Have a look at this demo repository to see it in action.
What does it actually do?
In plain English, on application startup it reads the map produced by aspax pack and registers an app.locals.asset() method you'll have to use in your views to translate all the asset URLs.
Have a look at the main file here for details.