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.

112 lines
2.5 KiB

  1. var concat = require('gulp-concat')
  2. var connect = require('gulp-connect')
  3. var gulp = require('gulp')
  4. var gutil = require('gulp-util')
  5. var htmlJsStr = require('js-string-escape')
  6. var inject = require('gulp-inject')
  7. var plumber = require('gulp-plumber')
  8. var rimraf = require('rimraf')
  9. var sass = require('gulp-sass')
  10. var sourcemaps = require('gulp-sourcemaps')
  11. var spawn = require("child_process").spawn
  12. var streamqueue = require('streamqueue')
  13. var svgmin = require('gulp-svgmin')
  14. var svgstore = require('gulp-svgstore')
  15. var uglify = require('gulp-uglify')
  16. //
  17. // Variables
  18. //
  19. var srcDir = './lib';
  20. var distDir = './build';
  21. var isDebug = !gutil.env.prod;
  22. //
  23. // Default
  24. //
  25. gulp.task('default', ['build'], function() {
  26. gulp.start('watch');
  27. });
  28. //
  29. // Clean
  30. //
  31. gulp.task('clean', function(cb) {
  32. rimraf(distDir, cb);
  33. });
  34. //
  35. // Build
  36. //
  37. gulp.task('build', ['clean'], function() {
  38. gulp.start('scripts', 'styles');
  39. });
  40. //
  41. // Watch
  42. //
  43. gulp.task('watch', ['server'], function() {
  44. gulp.watch(srcDir + '/js/**/*.js', ['scripts']);
  45. gulp.watch(srcDir + '/css/**/*.scss', ['styles']);
  46. });
  47. //
  48. // Server
  49. //
  50. gulp.task('server', function() {
  51. connect.server({
  52. root: './demo',
  53. port: 2222,
  54. livereload: false
  55. });
  56. });
  57. //
  58. // Javascript
  59. //
  60. gulp.task('scripts', function () {
  61. var svgs = gulp.src(srcDir + '/icons/*.svg')
  62. .pipe(svgmin())
  63. .pipe(svgstore({inlineSvg: true}))
  64. // .pipe(gulp.dest(distDir));
  65. function fileContents (filePath, file) {
  66. return file.contents.toString();
  67. }
  68. var files = [
  69. srcDir + '/js/core/bootstrap.js',
  70. srcDir + '/js/core/darkroom.js',
  71. srcDir + '/js/core/*.js',
  72. // srcDir + '/js/plugins/*.js',
  73. srcDir + '/js/plugins/darkroom.history.js',
  74. srcDir + '/js/plugins/darkroom.rotate.js',
  75. srcDir + '/js/plugins/darkroom.crop.js',
  76. srcDir + '/js/plugins/darkroom.save.js',
  77. ];
  78. gulp.src(files)
  79. .pipe(plumber())
  80. .pipe(isDebug ? sourcemaps.init() : gutil.noop())
  81. .pipe(concat('darkroom.js', {newLine: ';'}))
  82. .pipe(inject(svgs, { transform: fileContents }))
  83. .pipe(isDebug ? gutil.noop() : uglify({mangle: false}))
  84. .pipe(isDebug ? sourcemaps.write() : gutil.noop())
  85. .pipe(gulp.dest(distDir))
  86. })
  87. //
  88. // Stylesheet
  89. //
  90. gulp.task('styles', function () {
  91. gulp.src(srcDir + '/css/darkroom.scss')
  92. .pipe(plumber())
  93. .pipe(isDebug ? sourcemaps.init() : gutil.noop())
  94. .pipe(sass({
  95. outputStyle: isDebug ? 'nested' : 'compressed'
  96. }))
  97. .pipe(isDebug ? sourcemaps.write() : gutil.noop())
  98. .pipe(gulp.dest(distDir))
  99. })