gulpfile.js 3.4 KB

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