You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 944B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const fs = require('fs');
  2. const through = require('through2').obj;
  3. const PluginError = require('plugin-error');
  4. const PLUGIN_NAME = 'gulp-inject-js';
  5. module.exports = function() {
  6. 'use strict';
  7. const PATTERN = /<\!--\s*inject-js\s*(.*?)\s*-->/gi;
  8. function scriptInject(file, _enc, callback) {
  9. if (file.isNull()) {
  10. this.push(file);
  11. return callback();
  12. }
  13. if (file.isStream()) {
  14. this.emit('error', new PluginError(PLUGIN_NAME, 'Stream not supported'));
  15. return callback();
  16. }
  17. if (file.isBuffer()) {
  18. let contents = String(file.contents);
  19. contents = contents.replace(PATTERN, function(_match, src) {
  20. return '<script type="text/javascript">\n' + fs.readFileSync(file.base + '/' + src) + '\n</script>';
  21. });
  22. file.contents = new Buffer(contents);
  23. this.push(file);
  24. return callback();
  25. }
  26. return callback();
  27. }
  28. return through(scriptInject);
  29. };