gulpfile.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. var gulp = require('gulp')
  2. , gutil = require('gulp-util')
  3. , clean = require('gulp-clean')
  4. , concat = require('gulp-concat')
  5. , rename = require('gulp-rename')
  6. , minifycss = require('gulp-minify-css')
  7. , minifyhtml = require('gulp-minify-html')
  8. , processhtml = require('gulp-processhtml')
  9. , jshint = require('gulp-jshint')
  10. , uglify = require('gulp-uglify')
  11. , connect = require('gulp-connect')
  12. , paths;
  13. paths = {
  14. assets: 'src/assets/**/*',
  15. css: 'src/css/*.css',
  16. libs: [
  17. 'src/bower_components/phaser-official/build/phaser.min.js'
  18. ],
  19. js: ['src/js/**/*.js'],
  20. dist: './dist/'
  21. };
  22. gulp.task('clean', function () {
  23. var stream = gulp.src(paths.dist, {read: false})
  24. .pipe(clean({force: true}))
  25. .on('error', gutil.log);
  26. return stream;
  27. });
  28. gulp.task('copy', ['clean'], function () {
  29. gulp.src(paths.assets)
  30. .pipe(gulp.dest(paths.dist + 'assets'))
  31. .on('error', gutil.log);
  32. });
  33. gulp.task('uglify', ['clean','lint'], function () {
  34. var srcs = [paths.libs[0], paths.js[0]];
  35. gulp.src(srcs)
  36. .pipe(concat('main.min.js'))
  37. .pipe(gulp.dest(paths.dist))
  38. .pipe(uglify({outSourceMaps: false}))
  39. .pipe(gulp.dest(paths.dist));
  40. });
  41. gulp.task('minifycss', ['clean'], function () {
  42. gulp.src(paths.css)
  43. .pipe(minifycss({
  44. keepSpecialComments: false,
  45. removeEmpty: true
  46. }))
  47. .pipe(rename({suffix: '.min'}))
  48. .pipe(gulp.dest(paths.dist))
  49. .on('error', gutil.log);
  50. });
  51. gulp.task('processhtml', ['clean'], function() {
  52. gulp.src('src/index.html')
  53. .pipe(processhtml('index.html'))
  54. .pipe(gulp.dest(paths.dist))
  55. .on('error', gutil.log);
  56. });
  57. gulp.task('minifyhtml', ['clean'], function() {
  58. gulp.src('dist/index.html')
  59. .pipe(minifyhtml())
  60. .pipe(gulp.dest(paths.dist))
  61. .on('error', gutil.log);
  62. });
  63. gulp.task('lint', function() {
  64. gulp.src(paths.js)
  65. .pipe(jshint('.jshintrc'))
  66. .pipe(jshint.reporter('default'))
  67. .on('error', gutil.log);
  68. });
  69. gulp.task('html', function(){
  70. gulp.src('src/*.html')
  71. .pipe(connect.reload())
  72. .on('error', gutil.log);
  73. });
  74. gulp.task('connect', function () {
  75. connect.server({
  76. root: [__dirname + '/src'],
  77. port: 9000,
  78. livereload: true
  79. });
  80. });
  81. gulp.task('watch', function () {
  82. gulp.watch(paths.js, ['lint']);
  83. gulp.watch(['./src/index.html', paths.css, paths.js], ['html']);
  84. });
  85. gulp.task('default', ['connect', 'watch']);
  86. gulp.task('build', ['copy', 'uglify', 'minifycss', 'processhtml', 'minifyhtml']);