express-mincer-spa
v0.2.10
Published
simple solution to build frontend applications
Downloads
142
Maintainers
Readme
express-mincer-spa
easy generator of frontend application with express backend and mincer supported asset pipeline.
installation
$ npm install --global express-mincer-spa
usage
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: [
// DEFINE HERE FILES U WANNA PRECOMPILE
'app.css',
'app.js'
]
}
});
if(!module.parent) {
app.start();
}
Default Options
var defaultOpts = {
port: process.env.PORT || 3000,
ip: process.env.IP || '',
host: function() {
return exports.host(this.ip, 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;
next(error);
},
errorHandler: function(err, req, res, next) {
res.status(err.status || 500);
var resp = {
message: err.message
};
if(req.app.get('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: [
'assets'
],
},
precompile: {
target: path.resolve(root, 'public', 'assets'),
images: true,
fonts: true,
views: false,
viewFiles: [
'index'
],
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 exports.host(this.ip, this.port);
},
watch: [],
debug: env === 'development',
exts: [
'js',
'coffee',
'json',
'html',
'jade',
'ejs',
'css',
'styl',
'less',
'png',
'gif',
'jpg',
'svg',
'ico',
'eof',
'ttf',
'woff',
'woff2'
]
}
};
Mincer
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;
}
body
padding-top: 60px
contributing
- Found a bug? Create an issue!
- Missing Feature? Create an issue or fork the repo, implement the feature and start an pull request.