A simple file sharing site with an easy to use API and online panel.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
3.4KB

  1. var gulp = require('gulp');
  2. var concat = require('gulp-concat');
  3. var rename = require('gulp-rename');
  4. var uglify = require('gulp-uglify');
  5. var source = require('vinyl-source-stream');
  6. var browserify = require('browserify');
  7. var evstream = require('event-stream');
  8. var cleanCSS = require('gulp-clean-css');
  9. var nodemon = require('gulp-nodemon');
  10. var path = require('path');
  11. gulp.task('start', function() {
  12. nodemon({
  13. script: 'server.js',
  14. ignore: '*.*'
  15. });
  16. })
  17. gulp.task('watch', function () {
  18. nodemon({
  19. script: 'server.js',
  20. ext: 'js html css',
  21. env: {'NODE_ENV': 'dev'},
  22. watch: [
  23. 'app/',
  24. 'config/'
  25. ],
  26. tasks: function (changedFiles) {
  27. var tasks = [];
  28. changedFiles.forEach(function (file) {
  29. if (path.extname(file) === '.js' && !~tasks.indexOf('minjs'))
  30. tasks.push('minjs');
  31. if (path.extname(file) === '.css' && !~tasks.indexOf('mincss'))
  32. tasks.push('mincss');
  33. });
  34. return tasks;
  35. }
  36. }).on('restart?', function () {
  37. gulp.start('default');
  38. });
  39. });
  40. gulp.task('default', function () {
  41. gulp.start('minjs');
  42. gulp.start('mincss');
  43. });
  44. gulp.task('mincss', function () {
  45. var files = [
  46. {
  47. src: 'app/public/css/form.css',
  48. name: 'form.min.css'
  49. },
  50. {
  51. src: 'app/public/css/home.css',
  52. name: 'home.min.css'
  53. },
  54. {
  55. src: 'app/public/css/panel.css',
  56. name: 'panel.min.css'
  57. },
  58. {
  59. src: 'app/public/css/index.css',
  60. name: 'index.min.css'
  61. }
  62. ];
  63. var tasks = files.map(function (entry) {
  64. return gulp.src(entry.src)
  65. .pipe(cleanCSS())
  66. .pipe(rename(entry.name))
  67. .pipe(gulp.dest('public/css'));
  68. });
  69. return evstream.merge.apply(null, tasks);
  70. })
  71. gulp.task('minjs', function () {
  72. gulp.start('concatjs');
  73. gulp.start('browserify');
  74. });
  75. gulp.task('concatjs', function () {
  76. var files = [
  77. {
  78. src: [
  79. 'app/public/services/*.js',
  80. 'app/public/panel/**/*.js'
  81. ],
  82. name: 'panel.min.js'
  83. },
  84. {
  85. src: [
  86. 'app/public/services/*.js',
  87. 'app/public/shimapan/**/*.js'
  88. ],
  89. name: 'shimapan.min.js'
  90. },
  91. {
  92. src: 'app/public/index/*.js',
  93. name: 'index.min.js'
  94. }
  95. ];
  96. var tasks = files.map(function (entry) {
  97. return gulp.src(entry.src)
  98. .pipe(concat(entry.name))
  99. .pipe(uglify().on('error', function(err) {
  100. console.log(err.toString());
  101. }))
  102. .pipe(gulp.dest('public/js'));
  103. });
  104. return evstream.merge.apply(null, tasks);
  105. })
  106. gulp.task('browserify', ['concatjs'], function () {
  107. var files = [
  108. {
  109. src: 'public/js/shimapan.min.js',
  110. name: 'shimapan.bundle.js'
  111. },
  112. {
  113. src: 'public/js/panel.min.js',
  114. name: 'panel.bundle.js'
  115. }
  116. ];
  117. var tasks = files.map(function (entry) {
  118. return browserify({entries: [entry.src]})
  119. .bundle()
  120. .pipe(source(entry.src))
  121. .pipe(rename(entry.name))
  122. .pipe(gulp.dest('public/js'));
  123. });
  124. return evstream.merge.apply(null, tasks);
  125. });