gulpfile.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. var gulp = require('gulp'),
  2. plugins = require("gulp-load-plugins")(),
  3. paths = {}
  4. /* Error Handler -------------------------------- */
  5. var catchError = function(err) {
  6. console.log(err.toString());
  7. this.emit('end');
  8. }
  9. /* View ----------------------------------------- */
  10. paths.view = {
  11. js: [
  12. 'bower_components/jQuery/dist/jquery.min.js',
  13. 'bower_components/js-md5/js/md5.min.js',
  14. 'bower_components/mousetrap/mousetrap.min.js',
  15. 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js',
  16. '../src/scripts/_frameworks.js',
  17. '../src/scripts/view/main.js'
  18. ],
  19. coffee: [
  20. '../src/scripts/build.coffee'
  21. ],
  22. scripts: [
  23. '../dist/_view--javascript.js',
  24. '../dist/_view--coffee.js'
  25. ]
  26. }
  27. gulp.task('view--js', function() {
  28. return gulp.src(paths.view.js)
  29. .pipe(plugins.concat('_view--javascript.js', {newLine: "\n"}))
  30. .pipe(gulp.dest('../dist/'));
  31. });
  32. gulp.task('view--coffee', function() {
  33. return gulp.src(paths.view.coffee)
  34. .pipe(plugins.coffee({bare: true}))
  35. .on('error', catchError)
  36. .pipe(plugins.concat('_view--coffee.js', {newLine: "\n"}))
  37. .pipe(gulp.dest('../dist/'));
  38. });
  39. gulp.task('view--scripts', ['view--js', 'view--coffee'], function() {
  40. return gulp.src(paths.view.scripts)
  41. .pipe(plugins.concat('view.js', {newLine: "\n"}))
  42. .pipe(plugins.uglify())
  43. .on('error', catchError)
  44. .pipe(gulp.dest('../dist/'));
  45. });
  46. /* Main ----------------------------------------- */
  47. paths.main = {
  48. js: [
  49. 'bower_components/jQuery/dist/jquery.min.js',
  50. 'bower_components/js-md5/js/md5.min.js',
  51. 'bower_components/mousetrap/mousetrap.min.js',
  52. 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js',
  53. '../src/scripts/*.js'
  54. ],
  55. coffee: [
  56. '../src/scripts/*.coffee'
  57. ],
  58. scripts: [
  59. '../dist/_main--javascript.js',
  60. '../dist/_main--coffee.js'
  61. ],
  62. styles: [
  63. '../src/styles/main.scss'
  64. ]
  65. }
  66. gulp.task('main--js', function() {
  67. return gulp.src(paths.main.js)
  68. .pipe(plugins.concat('_main--javascript.js', {newLine: "\n"}))
  69. .pipe(gulp.dest('../dist/'));
  70. });
  71. gulp.task('main--coffee', function() {
  72. return gulp.src(paths.main.coffee)
  73. .pipe(plugins.coffee({bare: true}))
  74. .on('error', catchError)
  75. .pipe(plugins.concat('_main--coffee.js', {newLine: "\n"}))
  76. .pipe(gulp.dest('../dist/'));
  77. });
  78. gulp.task('main--scripts', ['main--js', 'main--coffee'], function() {
  79. return gulp.src(paths.main.scripts)
  80. .pipe(plugins.concat('main.js', {newLine: "\n"}))
  81. .pipe(plugins.uglify())
  82. .on('error', catchError)
  83. .pipe(gulp.dest('../dist/'));
  84. });
  85. gulp.task('main--styles', function() {
  86. return gulp.src(paths.main.styles)
  87. .pipe(plugins.sass())
  88. .on('error', catchError)
  89. .pipe(plugins.concat('main.css', {newLine: "\n"}))
  90. .pipe(plugins.autoprefixer('last 4 versions', '> 5%'))
  91. .pipe(plugins.minifyCss())
  92. .pipe(gulp.dest('../dist/'));
  93. });
  94. /* Clean ----------------------------------------- */
  95. gulp.task('clean', function() {
  96. return gulp.src('../dist/_*.*', { read: false })
  97. .pipe(plugins.rimraf({ force: true }))
  98. .on('error', catchError);
  99. });
  100. /* Tasks ----------------------------------------- */
  101. gulp.task('default', ['view--scripts', 'main--scripts', 'main--styles', 'clean']);
  102. gulp.task('watch', ['default'], function() {
  103. gulp.watch(paths.view.js, ['view--scripts', 'clean']);
  104. gulp.watch(paths.view.coffee, ['view--scripts', 'clean']);
  105. gulp.watch(paths.main.js, ['main--scripts', 'clean']);
  106. gulp.watch(paths.main.coffee, ['main--scripts', 'clean']);
  107. gulp.watch(paths.main.styles, ['main--styles', 'clean']);
  108. });