Skip to content

Commit

Permalink
Provide serverUtils module.
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Aufreiter committed Dec 15, 2015
1 parent 92ecfa5 commit 7e12ae7
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 41 deletions.
44 changes: 3 additions & 41 deletions server.js
Expand Up @@ -2,12 +2,12 @@ var express = require('express');
var path = require('path');
var glob = require('glob');
var browserify = require('browserify');
var sass = require('node-sass');
var PORT = process.env.PORT || 4201;
var app = express();

var config = require('./doc/config.json');
var generate = require('./doc/generator/generate');
var serverUtils = require('./util/serverUtils');

// use static server
app.use('/docs', express.static(path.join(__dirname, 'doc/assets')));
Expand All @@ -20,46 +20,8 @@ app.get('/docs/documentation.json', function(req, res) {
res.json(nodes);
});

app.get('/docs/app.js', function (req, res) {
browserify({ debug: true, cache: false })
.add(path.join(__dirname, 'doc', 'app.js'))
.bundle()
.on('error', function(err){
console.error(err.message);
res.send('console.log("'+err.message+'");');
})
.pipe(res);
});

var handleError = function(err, res) {
console.error(err);
res.status(400).json(err);
};

var renderSass = function(cb) {
sass.render({
file: path.join(__dirname, 'doc', 'app.scss'),
sourceMap: true,
outFile: 'app.css',
}, cb);
};


app.get('/docs/app.css', function(req, res) {
renderSass(function(err, result) {
if (err) return handleError(err, res);
res.set('Content-Type', 'text/css');
res.send(result.css);
});
});

app.get('/docs/app.css.map', function(req, res) {
renderSass(function(err, result) {
if (err) return handleError(err, res);
res.set('Content-Type', 'text/css');
res.send(result.map);
});
});
serverUtils.serveStyles(app, '/docs/app.css', path.join(__dirname, 'doc', 'app.scss'));
serverUtils.serveJS(app, '/docs/app.js', path.join(__dirname, 'doc', 'app.js'));

// Test suite
app.get('/test/test.js', function (req, res, next) {
Expand Down
71 changes: 71 additions & 0 deletions util/serverUtils.js
@@ -0,0 +1,71 @@
var browserify = require("browserify");
var sass = require('node-sass');

/**
@module
@example
```js
var serverUtils = require('substance/util/serverUtils');
```
*/
var serverUtils = {};

/**
Serves a bundled CSS file. For compilation Sass is used.
@param {ExpressApplication} Express.js application instance
@param {String} Express route under which the styles should be served
@param {String} sourcePath entry point for sass compilation
@example
```js
serverUtils.serveStyles(app, '/app.css', path.join(__dirname, 'src', 'app.scss'));
```
*/
serverUtils.serveStyles = function(app, route, sourcePath) {
app.get(route, function(req, res) {
sass.render({
file: sourcePath,
sourceMap: true,
sourceMapEmbed: true,
outFile: 'app.css',
}, function(err, result) {
if (err) {
console.error(err);
res.status(400).json(err);
} else {
res.set('Content-Type', 'text/css');
res.send(result.css);
}
});
});
};

/**
Serves a bundled JS file. Browserify is used as a module bundler.
@param {ExpressApplication} Express.js application instance
@param {String} Express route under which the bundled javascript should be served
@param {String} sourcePath entry point for js bundling
@example
```js
serverUtils.serveJS(app, 'app.js', path.join(__dirname, 'src', 'app.js'));
```
*/
serverUtils.serveJS = function(app, route, sourcePath) {
app.get(route, function(req, res) {
browserify({ debug: true, cache: false })
.add(sourcePath)
.bundle()
.on('error', function(err) {
console.error(err.message);
})
.pipe(res);
});
};

module.exports = serverUtils;

0 comments on commit 7e12ae7

Please sign in to comment.