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