index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // We listen for hexo changes on *.es6 extensions.
  2. // We fire our own build-examples.js and tell it which example to build -
  3. // that script then writes temporary js files
  4. // which we return via the callback.
  5. var exec = require('child_process').exec
  6. var path = require('path')
  7. var fs = require('fs')
  8. var uuid = require('uuid')
  9. var webRoot = path.dirname(path.dirname(__dirname))
  10. var browserifyScript = webRoot + '/build-examples.js'
  11. function parseExamplesBrowserify (data, options, callback) {
  12. if (!data || !data.path) {
  13. return callback(null)
  14. }
  15. if (!data.path.match(/\/examples\//)) {
  16. callback(null, data.text)
  17. }
  18. // var slug = data.path.replace(/[^a-zA-Z0-9\_\.]/g, '-')
  19. var slug = uuid.v4()
  20. var tmpFile = '/tmp/' + slug + '.js'
  21. var cmd = 'node ' + browserifyScript + ' ' + data.path + ' ' + tmpFile + ' --colors'
  22. // hexo.log.i('hexo-renderer-uppyexamples: change detected in examples. running: ' + cmd);
  23. exec(cmd, function (err, stdout, stderr) {
  24. if (err) {
  25. return callback(err)
  26. }
  27. hexo.log.i('hexo-renderer-uppyexamples: ' + stdout.trim())
  28. fs.readFile(tmpFile, 'utf-8', function (err, bundledJS) {
  29. if (err) {
  30. return callback(err)
  31. }
  32. // hexo.log.i('hexo-renderer-uppyexamples: read: ' + tmpFile);
  33. // @TODO remove this hack
  34. // once this is resolved: https://github.com/hexojs/hexo/issues/1663
  35. // bundledJS = bundledJS.replace(/</g, ' < ');
  36. bundledJS = bundledJS.replace(/<(?!=)/g, ' < ')
  37. callback(null, bundledJS)
  38. })
  39. })
  40. }
  41. hexo.extend.renderer.register('es6', 'js', parseExamplesBrowserify)