gulpfile.js 3.9 KB

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