gulpfile.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. const gulp = require('gulp');
  2. const sourcemaps = require('gulp-sourcemaps');
  3. const source = require('vinyl-source-stream');
  4. const buffer = require('vinyl-buffer');
  5. const browserify = require('browserify');
  6. const watchify = require('watchify');
  7. const babelify = require('babelify');
  8. const pathmod = require('pathmodify');
  9. const babel = require('gulp-babel');
  10. const uglify = require('gulp-uglify');
  11. const gutil = require('gulp-util');
  12. const zip = require('gulp-zip');
  13. const fs = require('fs');
  14. const es = require('event-stream');
  15. // const archiveFiles = [
  16. // 'style.css',
  17. // 'screenshot.png',
  18. // '*.php'
  19. // ];
  20. // const builtFiles = [
  21. // 'js/*'
  22. // ];
  23. // const watchedFiles = [
  24. // 'style.css',
  25. // 'screenshot.png',
  26. // '*.php',
  27. // 'js/*'
  28. // ];
  29. // const themeName = 'reago';
  30. function buildClient(watch, done) {
  31. var bundler =
  32. browserify('./src/index.js', { debug: true })
  33. .plugin(pathmod, {mods: [
  34. pathmod.mod.dir('node_modules', __dirname + '/node_modules'),
  35. ]})
  36. // Transform JSX https://github.com/andreypopp/reactify/issues/58
  37. // Fix unexpected ... https://github.com/babel/babel-loader/issues/170
  38. .transform(babelify, { presets: ['es2015', 'stage-0', 'react'] });
  39. return new Promise(function (resolve, reject) {
  40. bundler.bundle()
  41. .on('error', function(err) { console.error(err); this.emit('end'); })
  42. .pipe(source('bundle.react.js'))
  43. .pipe(buffer())
  44. // .pipe(uglify())
  45. .pipe(sourcemaps.init({ loadMaps: true }))
  46. .pipe(sourcemaps.write('./'))
  47. .pipe(gulp.dest('./js'))
  48. .on('end', resolve);
  49. });
  50. }
  51. // function extractThemeVersion() {
  52. // return new Promise((resolve, reject) => {
  53. // fs.readFile(__dirname + '/style.css', (err, buf) => {
  54. // if(err) return reject(err);
  55. // const stylesheet = buf.toString();
  56. // const versionRegex = /Version\: ([0-9\.]+)/g;
  57. // const matches = versionRegex.exec(stylesheet);
  58. // themeVersion = matches[1];
  59. // resolve(themeVersion);
  60. // });
  61. // });
  62. // }
  63. // function makeZip(cb) {
  64. // return extractThemeVersion()
  65. // .then(themeVersion => {
  66. // var base = 'dist/' + themeVersion;
  67. // var tmp = base + '/reago';
  68. // var rebasedFiles = base + '/**/*';
  69. // es.concat(
  70. // gulp.src(archiveFiles)
  71. // .pipe(gulp.dest(tmp)),
  72. // gulp.src(builtFiles)
  73. // .pipe(gulp.dest( tmp + '/js')),
  74. // gulp.src(rebasedFiles, { base })
  75. // .pipe(zip(themeName + '-' + themeVersion + '.zip'))
  76. // .pipe(gulp.dest('dist'))
  77. // ).on('end', cb)
  78. // });
  79. // }
  80. gulp.task('watch', function() {
  81. gulp.watch(['src'], buildClient);
  82. // gulp.watch(watchedFiles, makeZip);
  83. });
  84. gulp.task('buildClient', function() {
  85. return buildClient();
  86. });
  87. // gulp.task('makeZip', makeZip);
  88. gulp.task('default', gulp.series('buildClient', 'watch'));