gulpfile.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. var gulp = require("gulp");
  2. var merge = require('merge-stream');
  3. var babel = require("gulp-babel");
  4. var uglify = require('gulp-uglify');
  5. var concat = require('gulp-concat');
  6. var nodemon = require('gulp-nodemon');
  7. var plumber = require('gulp-plumber');
  8. var zip = require('gulp-zip');
  9. var tar = require('gulp-tar');
  10. var gzip = require('gulp-gzip');
  11. var sass = require('gulp-sass');
  12. var cleanCSS = require('gulp-clean-css');
  13. var include = require("gulp-include");
  14. /**
  15. * Paths
  16. *
  17. * @type {Object}
  18. */
  19. var paths = {
  20. scriptlibs: [
  21. './node_modules/socket.io-client/socket.io.js',
  22. './node_modules/jquery/dist/jquery.min.js',
  23. './node_modules/vue/dist/vue.min.js',
  24. './node_modules/jquery-smooth-scroll/jquery.smooth-scroll.min.js',
  25. './node_modules/sticky-js/dist/sticky.min.js',
  26. './node_modules/simplemde/dist/simplemde.min.js',
  27. './node_modules/ace-builds/src-min-noconflict/ace.js',
  28. './node_modules/ace-builds/src-min-noconflict/mode-markdown.js',
  29. './node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night.js',
  30. './node_modules/lodash/lodash.min.js'
  31. ],
  32. scriptapps: [
  33. './client/js/components/*.js',
  34. './client/js/app.js'
  35. ],
  36. scriptapps_watch: [
  37. './client/js/**/*.js'
  38. ],
  39. csslibs: [
  40. './node_modules/font-awesome/css/font-awesome.min.css',
  41. './node_modules/highlight.js/styles/default.css',
  42. './node_modules/simplemde/dist/simplemde.min.css'
  43. ],
  44. cssapps: [
  45. './client/scss/app.scss'
  46. ],
  47. cssapps_watch: [
  48. './client/scss/**/*.scss'
  49. ],
  50. cssapps_imports: [
  51. './node_modules/bulma/'
  52. ],
  53. fonts: [
  54. './node_modules/font-awesome/fonts/*-webfont.*',
  55. '!./node_modules/font-awesome/fonts/*-webfont.svg'
  56. ],
  57. deploypackage: [
  58. './assets/**/*',
  59. './client/content/**/*',
  60. './controllers/**/*',
  61. './locales/**/*',
  62. './middlewares/**/*',
  63. './models/**/*',
  64. './views/**/*',
  65. './LICENSE',
  66. './agent.js',
  67. './server.js',
  68. './package.json',
  69. './config.sample.yml'
  70. ]
  71. };
  72. /**
  73. * TASK - Starts server in development mode
  74. */
  75. gulp.task('server', ['scripts', 'css', 'fonts'], function() {
  76. nodemon({
  77. script: './server',
  78. ignore: ['assets/', 'client/', 'data/', 'repo/', 'tests/'],
  79. ext: 'js json',
  80. env: { 'NODE_ENV': 'development' }
  81. });
  82. });
  83. /**
  84. * TASK - Process all scripts processes
  85. */
  86. gulp.task("scripts", ['scripts-libs', 'scripts-app']);
  87. /**
  88. * TASK - Combine js libraries
  89. */
  90. gulp.task("scripts-libs", function () {
  91. return gulp.src(paths.scriptlibs)
  92. .pipe(plumber())
  93. .pipe(concat('libs.js'))
  94. .pipe(uglify({ mangle: false }))
  95. .pipe(plumber.stop())
  96. .pipe(gulp.dest("./assets/js"));
  97. });
  98. /**
  99. * TASK - Combine, make compatible and compress js app scripts
  100. */
  101. gulp.task("scripts-app", function () {
  102. return gulp.src(paths.scriptapps)
  103. .pipe(plumber())
  104. .pipe(concat('app.js'))
  105. .pipe(include({ extensions: "js" }))
  106. .pipe(babel())
  107. .pipe(uglify())
  108. .pipe(plumber.stop())
  109. .pipe(gulp.dest("./assets/js"));
  110. });
  111. /**
  112. * TASK - Process all css processes
  113. */
  114. gulp.task("css", ['css-libs', 'css-app']);
  115. /**
  116. * TASK - Combine css libraries
  117. */
  118. gulp.task("css-libs", function () {
  119. return gulp.src(paths.csslibs)
  120. .pipe(plumber())
  121. .pipe(concat('libs.css'))
  122. .pipe(cleanCSS({ keepSpecialComments: 0 }))
  123. .pipe(plumber.stop())
  124. .pipe(gulp.dest("./assets/css"));
  125. });
  126. /**
  127. * TASK - Combine app css
  128. */
  129. gulp.task("css-app", function () {
  130. return gulp.src(paths.cssapps)
  131. .pipe(plumber())
  132. .pipe(sass({
  133. includePaths: paths.cssapps_imports
  134. }))
  135. .pipe(concat('app.css'))
  136. .pipe(cleanCSS({ keepSpecialComments: 0 }))
  137. .pipe(plumber.stop())
  138. .pipe(gulp.dest("./assets/css"));
  139. });
  140. /**
  141. * TASK - Copy web fonts
  142. */
  143. gulp.task("fonts", function () {
  144. return gulp.src(paths.fonts)
  145. .pipe(gulp.dest("./assets/fonts"));
  146. });
  147. /**
  148. * TASK - Start dev watchers
  149. */
  150. gulp.task('watch', function() {
  151. gulp.watch([paths.scriptapps_watch], ['scripts-app']);
  152. gulp.watch([paths.cssapps_watch], ['css-app']);
  153. });
  154. /**
  155. * TASK - Starts development server with watchers
  156. */
  157. gulp.task('default', ['watch', 'server']);
  158. /**
  159. * TASK - Creates deployment packages
  160. */
  161. gulp.task('deploy', ['scripts', 'css', 'fonts'], function() {
  162. var zipStream = gulp.src(paths.deploypackage)
  163. .pipe(zip('requarks-wiki.zip'))
  164. .pipe(gulp.dest('dist'));
  165. var targzStream = gulp.src(paths.deploypackage)
  166. .pipe(tar('requarks-wiki.tar'))
  167. .pipe(gzip())
  168. .pipe(gulp.dest('dist'));
  169. return merge(zipStream, targzStream);
  170. });