Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including express-mincer-spa with all npm packages installed. Try it out:

var expressMincerSpa = require("express-mincer-spa")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

express-mincer-spa v0.2.10

simple solution to build frontend applications


easy generator of frontend application with express backend and mincer supported asset pipeline.

npm version Dependency Status

Build Status Coverage Status



$ npm install --global express-mincer-spa


Generate new application

$ ems new my-spa-application

Start application

$ ems start my-spa-application

// or

$ node my-spa-application

// or

$ cd my-spa-application
$ node index.js

Precompile assets

$ ems precompile

Main File

var expressMincerSpa = require('..');
var app = module.exports = expressMincerSpa(__dirname, {
    precompile: {
        files: [

if(!module.parent) {

Default Options

see here in lib

var defaultOpts = {
    port: process.env.PORT || 3000,
    ip: process.env.IP || '',
    host: function() {
      return, this.port);
    engine: 'jade',
    views: path.resolve(root, 'views'),
    public: path.resolve(root, 'public'),
    favicon: path.resolve(root, 'public', 'favicon.ico'),
    useSpaRoute: true,
    middlewareForStaticPublic: [],
    configureAssetPipeline: function(assetPipeline)  {},
    configureExpressBeforeMiddlewares: function(app)  {},
    configureExpress: function(app)  {},
    notFoundHandler: function (req, res, next) {
        var error = new Error('Not Found');
        error.status = 404;
    errorHandler: function(err, req, res, next) {
        res.status(err.status || 500);
        var resp = {
            message: err.message
        if('env') !== 'production') {
            resp.error = err;
            resp.stack = err.stack.split('\n');
        res.render('error.jade', resp);
  assets: {
      mincer: Mincer,
      root: root,
      production: env === 'production',
      mountPoint: '/assets',
      manifestFile: path.resolve(root, 'public', 'assets', 'manifest.json'),
      paths: [],
      scanDirectories: [
  precompile: {
      target: path.resolve(root, 'public', 'assets'),
      images: true,
      fonts: true,
      views: false,
      viewFiles: [
      viewsTarget: path.resolve(root, 'public'),
      updateAppBeforePrecompileViews: function(app) {},
      files: [],
      options: {}
  livereload: {
      active: env === 'development',
      ip: process.env.LIVERELOAD_IP || 'localhost',
      port: process.env.LIVERELOAD_PORT || 35729,
      script: function () {
          return util.format('//%s:%s/livereload.js', this.ip, this.port);
      host: function() {
          return, this.port);
      watch: [],
      debug: env === 'development',
      exts: [


Connect Mincer

example font fix

e.g. Font-Awesome

//= require font-awesome/css/font-awesome.css

@font-face {
  font-family: 'FontAwesome';
  src: url(asset_path('font-awesome/fonts/fontawesome-webfont.eot')+'?v=4.4.0');
  src: url(asset_path('font-awesome/fonts/fontawesome-webfont.eot')+'?#iefix&v=4.4.0') format('embedded-opentype'), 
       url(asset_path('font-awesome/fonts/fontawesome-webfont.woff2')+'?v=4.4.0') format('woff2'), 
       url(asset_path('font-awesome/fonts/fontawesome-webfont.woff')+'?v=4.4.0') format('woff'), 
       url(asset_path('font-awesome/fonts/fontawesome-webfont.ttf')+'?v=4.4.0') format('truetype'), 
       url(asset_path('font-awesome/fonts/fontawesome-webfont.svg')+'?v=4.4.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;

  padding-top: 60px


  • Found a bug? Create an issue!
  • Missing Feature? Create an issue or fork the repo, implement the feature and start an pull request.



RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free