aspax-express

    0.7.7 • Public • Published

    What's this?

    NPM version Dependency Status License Downloads

    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 --save
    

    Usage

    Quick steps:

    1. Create a folder structure similar to this one for your project:

       /assets        -> asset sources
       /server        -> main Express.js application folder
       /server/public -> public static folder
      

      Notice: put all your asset sources in /assets; don't put anything in /server/public, as it will be overwritten.

    2. Create /assets/aspax.yml describing 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
      
       ...
      
    3. 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-dev
      
    4. Add 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) {
       ...
       });
      
    5. 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'))
      
    6. Then, in your /server folder 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 clean
      
    7. Run 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.js
      

      Notice: if you're using nodemon in development mode, add aspax.json to .nodemonignore to 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.

    Endorsing the author

    Install

    npm i aspax-express

    DownloadsWeekly Downloads

    37

    Version

    0.7.7

    License

    MIT

    Last publish

    Collaborators

    • avatar