UNPKG

nyx_server

Version:

Node内容发布

70 lines (60 loc) 1.98 kB
/* global Buffer */ /* global __dirname */ /* global process */ var path = require("path"); var Watch = require("../utils/Watch"); var browserSync = require("browser-sync"); var clearRequireCache = require("../utils/ClearNodeRequireCache"); var watch = new Watch(); var workDir = path.join(process.cwd() , "**/*.*"); var executeDir = path.join(__dirname , "../*.*"); var bs = browserSync.create(); bs.init(); watch.addPath([workDir , executeDir] , function(event , path){ if (path.indexOf('.log') >= 0) { return; } clearRequireCache(); bs.reload(); }); var browserSynccode = "<script type='text/javascript' id=\"__bs_script__\">//<![CDATA[\n" + "document.write(\"<script async src='http://HOST:3000/browser-sync/browser-sync-client.2.10.0.js'><\\\/script>\".replace(\"HOST\", location.hostname));\n" + "//]]></script>\n"; module.exports = (function (code) { return function (req, res, next) { var write = res.write; var writeHead = res.writeHead; var end = res.end; var called; var buf = ''; var inject_snippet = function(string, encoding) { if (called) return; if (string !== undefined) { var body = string instanceof Buffer ? string.toString(encoding) : string; buf += body.replace(/<\/body>/, function (w) { called = true; return code + w; }); } }; res.write = function (string, encoding) { write.call(res, '', encoding); inject_snippet(string, encoding); return true; }; res.writeHead = function() { }; res.end = function (string, encoding) { res.end = end; res.write = write; // Restore writeHead res.writeHead = writeHead; inject_snippet(string, encoding); if (buf &&!res._header) { res.setHeader('content-length', Buffer.byteLength(buf, encoding)); } end.call(res, buf, encoding); }; next(); }; })(browserSynccode);