gulpfile.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. var gulp = require('gulp');
  2. var glob = require('glob');
  3. var path = require('path');
  4. var jshint = require('gulp-jshint');
  5. var sass = require('gulp-sass');
  6. var concat = require('gulp-concat');
  7. var uglify = require('gulp-uglify');
  8. var rename = require('gulp-rename');
  9. var minifyCSS = require('gulp-minify-css');
  10. var babelify = require('babelify');
  11. var browserify = require('browserify');
  12. var source = require('vinyl-source-stream');
  13. var buffer = require('vinyl-buffer');
  14. var wrap = require('gulp-wrap');
  15. var qunit = require('gulp-qunit');
  16. var babel = require('gulp-babel');
  17. // Lint Task
  18. gulp.task('lint', function() {
  19. gulp.src('dev/sweetalert.es6.js')
  20. .pipe(jshint())
  21. .pipe(jshint.reporter('default'));
  22. return gulp.src('dev/*/*.js')
  23. .pipe(jshint())
  24. .pipe(jshint.reporter('default'));
  25. });
  26. // Compile Our Sass
  27. gulp.task('sass', function() {
  28. gulp.src('example/example.scss')
  29. .pipe(sass())
  30. .pipe(rename('example.css'))
  31. .pipe(gulp.dest('example'));
  32. // (We don't use minifyCSS since it breaks the ie9 file for some reason)
  33. gulp.src(['dev/sweetalert.scss', 'dev/ie9.css', 'dev/loader-animation.css'])
  34. .pipe(sass())
  35. .pipe(concat('sweetalert.css'))
  36. .pipe(gulp.dest('dist'));
  37. });
  38. // Compile theme CSS
  39. var themes = glob.sync('themes/*').map(function(themeDir) {
  40. return path.basename(themeDir);
  41. });
  42. themes.forEach(function(name) {
  43. gulp.task(name + '-theme', function() {
  44. return gulp.src('themes/' + name + '/' + name + '.scss')
  45. .pipe(sass()) // etc
  46. .pipe(rename(name + '.css'))
  47. .pipe(gulp.dest('themes/' + name))
  48. });
  49. });
  50. gulp.task('themes', themes.map(function(name){ return name + '-theme'; }));
  51. // Compile ES5 CommonJS entry point
  52. gulp.task('commonjs', function() {
  53. gulp.src('./dev/sweetalert.es6.js')
  54. .pipe(babel())
  55. .pipe(rename('sweetalert.js'))
  56. .pipe(gulp.dest('lib'));
  57. gulp.src('./dev/modules/*.js')
  58. .pipe(babel())
  59. .pipe(gulp.dest('lib/modules'));
  60. });
  61. // Concatenate & Minify JS
  62. gulp.task('scripts', function() {
  63. return browserify({
  64. entries: './dev/sweetalert.es6.js',
  65. debug: true
  66. })
  67. .transform(babelify)
  68. .bundle()
  69. .pipe(source('sweetalert-dev.js'))
  70. .pipe(wrap({
  71. src: './dev/gulpfile-wrap-template.js'
  72. }))
  73. .pipe(gulp.dest('dist')) // Developer version
  74. .pipe(rename('sweetalert.min.js'))
  75. .pipe(buffer())
  76. .pipe(uglify())
  77. .pipe(gulp.dest('dist')); // User version
  78. });
  79. gulp.task('test', function() {
  80. return gulp.src('./test/index.html')
  81. .pipe(qunit({
  82. timeout: 20
  83. }));
  84. });
  85. // Watch Files For Changes
  86. gulp.task('watch', function() {
  87. gulp.watch(['dev/*.js', 'dev/*/*.js'], ['lint', 'scripts']);
  88. gulp.watch(['dev/*.scss', 'dev/*.css'], ['sass']);
  89. gulp.watch('themes/*/*.scss', ['themes']);
  90. });
  91. // Default Task
  92. gulp.task('default', ['lint', 'sass', 'scripts', 'commonjs', 'watch', 'test']);