gulpfile.js 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. 'use strict'
  2. // empty change
  3. const gulp = require('gulp')
  4. const concat = require('gulp-concat')
  5. // const sass = require('gulp-sass')
  6. // const stylus = require('gulp-stylus')
  7. const rename = require('gulp-rename')
  8. const uglify = require('gulp-uglify')
  9. const cleanCSS = require('gulp-clean-css')
  10. const babel = require('gulp-babel')
  11. const gulpsync = require('gulp-sync')(gulp)
  12. const jshint = require('gulp-jshint')
  13. const stylish = require('jshint-stylish')
  14. const expect = require('gulp-expect-file')
  15. const plumber = require('gulp-plumber')
  16. const browserSync = require('browser-sync').create()
  17. const autoprefixer= require('gulp-autoprefixer')
  18. const rewriteCSS = require('gulp-rewrite-css')
  19. const _srcdir = 'tracim/tracim/public/assets/'
  20. const _tpldir = 'tracim/tracim/templates/'
  21. const listCssFiles = [
  22. _srcdir + 'css/default_skin.css',
  23. _srcdir + 'css/bootstrap.css',
  24. _srcdir + 'font-awesome-4.2.0/css/font-awesome.css',
  25. _srcdir + 'select2-4.0.3/css/select2.min.css',
  26. _srcdir + 'css/dashboard.css'
  27. ]
  28. const listJsFiles = [
  29. _srcdir + 'select2-4.0.3/js/select2.min.js',
  30. _srcdir + 'js/bootstrap.min.js',
  31. _srcdir + 'js/trad.js',
  32. _srcdir + 'js/main_es5.js'
  33. ]
  34. // CSS task
  35. gulp.task('css', function () {
  36. const dest = _srcdir + '/dist/'
  37. return gulp.src(listCssFiles)
  38. .pipe(expect({verbose: true}, listCssFiles))
  39. .pipe(rewriteCSS({
  40. destination: dest,
  41. // debug: true
  42. }))
  43. // .pipe(sass().on('error', sass.logError))
  44. // .pipe(stylus())
  45. .pipe(autoprefixer({
  46. browsers: ['last 2 versions'],
  47. cascade: false
  48. }))
  49. .pipe(concat('all.css'))
  50. .pipe(gulp.dest(dest))
  51. .pipe(browserSync.stream())
  52. })
  53. // JS tasks
  54. gulp.task('js_hint', function() {
  55. return gulp.src(_srcdir + '/js/main.js')
  56. .pipe(expect({verbose: true}, _srcdir + '/js/main.js'))
  57. .pipe(jshint())
  58. .pipe(jshint.reporter(stylish))
  59. })
  60. gulp.task('js_transpiling', function() {
  61. return gulp.src(_srcdir + '/js/main.js')
  62. .pipe(plumber())
  63. .pipe(babel({ presets: ['es2015'] }))
  64. .pipe(concat('main_es5.js'))
  65. .pipe(gulp.dest(_srcdir + '/js/'))
  66. })
  67. gulp.task('js_concat', function() {
  68. return gulp.src(listJsFiles)
  69. .pipe(expect({verbose: true}, listJsFiles))
  70. .pipe(concat('all.js'))
  71. .pipe(gulp.dest(_srcdir + '/dist/'))
  72. .pipe(browserSync.stream())
  73. })
  74. gulp.task('js_sync', gulpsync.sync(['js_transpiling', 'js_concat']))
  75. gulp.task('js', ['js_hint', 'js_sync'])
  76. // BUILD tasks
  77. gulp.task('prod_css', ['css'], function () {
  78. return gulp.src(_srcdir + '/dist/all.css')
  79. .pipe(expect({verbose: true}, _srcdir + '/dist/all.css'))
  80. .pipe(cleanCSS({keepSpecialComments:0}))
  81. .pipe(concat('all.min.css'))
  82. .pipe(gulp.dest(_srcdir + '/dist/'))
  83. })
  84. gulp.task('prod_js', ['js'], function () {
  85. return gulp.src(_srcdir + '/dist/all.js')
  86. .pipe(expect({verbose: true}, _srcdir + '/dist/all.js'))
  87. .pipe(uglify())
  88. .pipe(concat('all.min.js'))
  89. .pipe(gulp.dest(_srcdir + '/dist/'))
  90. })
  91. gulp.task('prod', ['prod_css', 'prod_js'])
  92. gulp.task('dev', ['css', 'js'])
  93. // WATCH task
  94. gulp.task('watch', function () {
  95. gulp.watch([
  96. _srcdir + '/js/*.js',
  97. '!'+_srcdir+'/js/scripts_es5.js',
  98. '!'+_srcdir+'/js/*.min.*'
  99. ], {verbose: true, debounceDelay: 2000}, ['js'])
  100. gulp.watch([
  101. _srcdir + '/css/*.css',
  102. '!'+_srcdir+'/css/*.min.*',
  103. '!'+_srcdir+'/css/*.map'
  104. ], ['css'])
  105. })
  106. // LIVERELOAD task
  107. gulp.task('livesync', function() {
  108. browserSync.init({
  109. ghostMode: false, // comment this line to mirror input click and scroll on all opened browsers
  110. proxy: "127.0.0.1:8080",
  111. browser: "chromium",
  112. port: 8081
  113. })
  114. gulp.watch(_tpldir + '**/*.html').on('change', browserSync.reload)
  115. })
  116. gulp.task('watchsync', ['watch', 'livesync'])
  117. // DEFAULT task
  118. gulp.task('default', function () {
  119. console.log(`
  120. Usable tasks : watchsync, watch, dev, prod, js, css
  121. Other available tasks : livesync, js_sync, js_concat, js_hint, prod_css, prod_js
  122. `)
  123. })