gulpfile.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. '../src/scripts/_gup.js',
  13. '../src/scripts/view/main.js'
  14. ],
  15. coffee: [
  16. '../src/scripts/build.coffee'
  17. ],
  18. scripts: [
  19. 'bower_components/jQuery/dist/jquery.min.js',
  20. '../dist/_view--javascript.js',
  21. '../dist/_view--coffee.js'
  22. ]
  23. }
  24. gulp.task('view--js', function() {
  25. var stream =
  26. gulp.src(paths.view.js)
  27. .pipe(plugins['6to5']())
  28. .on('error', catchError)
  29. .pipe(plugins.concat('_view--javascript.js', {newLine: "\n"}))
  30. .pipe(gulp.dest('../dist/'));
  31. return stream;
  32. });
  33. gulp.task('view--coffee', function() {
  34. var stream =
  35. gulp.src(paths.view.coffee)
  36. .pipe(plugins.coffee({bare: true}))
  37. .on('error', catchError)
  38. .pipe(plugins.concat('_view--coffee.js', {newLine: "\n"}))
  39. .pipe(gulp.dest('../dist/'));
  40. return stream;
  41. });
  42. gulp.task('view--scripts', ['view--js', 'view--coffee'], function() {
  43. var stream =
  44. gulp.src(paths.view.scripts)
  45. .pipe(plugins.concat('view.js', {newLine: "\n"}))
  46. .pipe(plugins.uglify())
  47. .on('error', catchError)
  48. .pipe(gulp.dest('../dist/'));
  49. return stream;
  50. });
  51. /* Main ----------------------------------------- */
  52. paths.main = {
  53. js: [
  54. '../src/scripts/*.js'
  55. ],
  56. coffee: [
  57. '../src/scripts/*.coffee'
  58. ],
  59. scripts: [
  60. 'bower_components/jQuery/dist/jquery.min.js',
  61. 'bower_components/js-md5/js/md5.min.js',
  62. 'bower_components/mousetrap/mousetrap.min.js',
  63. 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js',
  64. 'bower_components/basicContext/dist/basicContext.min.js',
  65. 'bower_components/basicModal/dist/basicModal.min.js',
  66. '../dist/_main--javascript.js',
  67. '../dist/_main--coffee.js'
  68. ],
  69. scss: [
  70. '../src/styles/*.scss'
  71. ],
  72. styles: [
  73. 'bower_components/basicContext/src/styles/main.scss',
  74. 'bower_components/basicModal/src/styles/main.scss',
  75. '../src/styles/main.scss'
  76. ]
  77. }
  78. gulp.task('main--js', function() {
  79. var stream =
  80. gulp.src(paths.main.js)
  81. .pipe(plugins['6to5']())
  82. .on('error', catchError)
  83. .pipe(plugins.concat('_main--javascript.js', {newLine: "\n"}))
  84. .pipe(gulp.dest('../dist/'));
  85. return stream;
  86. });
  87. gulp.task('main--coffee', function() {
  88. var stream =
  89. gulp.src(paths.main.coffee)
  90. .pipe(plugins.coffee({bare: true}))
  91. .on('error', catchError)
  92. .pipe(plugins.concat('_main--coffee.js', {newLine: "\n"}))
  93. .pipe(gulp.dest('../dist/'));
  94. return stream;
  95. });
  96. gulp.task('main--scripts', ['main--js', 'main--coffee'], function() {
  97. var stream =
  98. gulp.src(paths.main.scripts)
  99. .pipe(plugins.concat('main.js', {newLine: "\n"}))
  100. .pipe(plugins.uglify())
  101. .on('error', catchError)
  102. .pipe(gulp.dest('../dist/'));
  103. return stream;
  104. });
  105. gulp.task('main--styles', function() {
  106. var stream =
  107. gulp.src(paths.main.styles)
  108. .pipe(plugins.sass())
  109. .on('error', catchError)
  110. .pipe(plugins.concat('main.css', {newLine: "\n"}))
  111. .pipe(plugins.autoprefixer('last 4 versions', '> 5%'))
  112. .pipe(plugins.minifyCss())
  113. .pipe(gulp.dest('../dist/'));
  114. return stream;
  115. });
  116. /* Clean ----------------------------------------- */
  117. gulp.task('clean', function() {
  118. var stream =
  119. gulp.src('../dist/_*.*', { read: false })
  120. .pipe(plugins.rimraf({ force: true }))
  121. .on('error', catchError);
  122. return stream;
  123. });
  124. /* Tasks ----------------------------------------- */
  125. gulp.task('default', ['view--scripts', 'main--scripts', 'main--styles'], function() {
  126. gulp.start('clean');
  127. });
  128. gulp.task('watch', ['default'], function() {
  129. gulp.watch(paths.view.js, ['view--scripts']);
  130. gulp.watch(paths.view.coffee, ['view--scripts']);
  131. gulp.watch(paths.main.js, ['main--scripts']);
  132. gulp.watch(paths.main.coffee, ['main--scripts']);
  133. gulp.watch(paths.main.scss, ['main--styles']);
  134. });