UNPKG

@cxteam/browsersync-ssi

Version:

SSI (Server Side Includes) Middleware for Browser-Sync

43 lines (30 loc) 992 B
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(); } }; };