@cxteam/browsersync-ssi
Version:
SSI (Server Side Includes) Middleware for Browser-Sync
43 lines (30 loc) • 992 B
JavaScript
module.exports = function browserSyncSSI(opt) {
'use strict';
var ssi = require('@cxteam/ssi');
var path = require('path');
var fs = require('fs');
var url = require('url');
var opt = opt || {};
var ext = opt.ext || '.shtml';
var baseDir = opt.baseDir || __dirname;
var matcher = '/**/*' + ext;
var version = opt.version || '';
var bsURL;
var parser = new ssi(baseDir, baseDir, matcher, true);
return function(req, res, next) {
var pathname = url.parse(req.originalUrl || req.url).pathname;
var filename = path.join(baseDir, pathname.substr(-1) === '/' ? pathname + 'index' + ext : pathname);
if (filename.indexOf(ext) > -1 && fs.existsSync(filename)) {
var file_str = fs.readFileSync(filename, {
encoding: 'utf8'
})
var contents = parser.parse(filename, file_str).contents;
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.end(contents);
} else {
next();
}
};
};