app.js 895 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. * Require Browsersync
  3. */
  4. var browserSync = require("browser-sync");
  5. /**
  6. * Run the middleware on files that contain .less
  7. */
  8. function lessMiddleware (req, res, next) {
  9. var parsed = require("url").parse(req.url);
  10. if (parsed.pathname.match(/\.less$/)) {
  11. return less(parsed.pathname).then(function (o) {
  12. res.setHeader('Content-Type', 'text/css');
  13. res.end(o.css);
  14. });
  15. }
  16. next();
  17. }
  18. /**
  19. * Compile less
  20. */
  21. function less(src) {
  22. var f = require('fs').readFileSync('app' + src).toString();
  23. return require('less').render(f);
  24. }
  25. /**
  26. * Run Browsersync with less middleware
  27. */
  28. browserSync({
  29. files: "app/css/*.less",
  30. server: "app",
  31. injectFileTypes: ["less"],
  32. /**
  33. * Catch all requests, if any are for .less files, recompile on the fly and
  34. * send back a CSS response
  35. */
  36. middleware: lessMiddleware
  37. });