github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/static/semantic/tasks/rtl/build.js (about) 1 /******************************* 2 Build Task 3 *******************************/ 4 5 var 6 gulp = require('gulp'), 7 8 // node dependencies 9 fs = require('fs'), 10 11 // gulp dependencies 12 autoprefixer = require('gulp-autoprefixer'), 13 chmod = require('gulp-chmod'), 14 clone = require('gulp-clone'), 15 flatten = require('gulp-flatten'), 16 gulpif = require('gulp-if'), 17 less = require('gulp-less'), 18 minifyCSS = require('gulp-minify-css'), 19 plumber = require('gulp-plumber'), 20 print = require('gulp-print'), 21 rename = require('gulp-rename'), 22 replace = require('gulp-replace'), 23 rtlcss = require('gulp-rtlcss'), 24 uglify = require('gulp-uglify'), 25 26 // user config 27 config = require('../config/user'), 28 29 // install config 30 tasks = require('../config/project/tasks'), 31 install = require('../config/project/install'), 32 33 // shorthand 34 globs = config.globs, 35 assets = config.paths.assets, 36 output = config.paths.output, 37 source = config.paths.source, 38 39 banner = tasks.banner, 40 comments = tasks.regExp.comments, 41 log = tasks.log, 42 settings = tasks.settings 43 ; 44 45 // add internal tasks (concat release) 46 require('../collections/internal')(gulp); 47 48 module.exports = function(callback) { 49 50 var 51 stream, 52 compressedStream, 53 uncompressedStream 54 ; 55 56 console.info('Building Semantic'); 57 58 if( !install.isSetup() ) { 59 console.error('Cannot build files. Run "gulp install" to set-up Semantic'); 60 return; 61 } 62 63 // unified css stream 64 stream = gulp.src(source.definitions + '/**/' + globs.components + '.less') 65 .pipe(plumber()) 66 .pipe(less(settings.less)) 67 .pipe(autoprefixer(settings.prefix)) 68 .pipe(rtlcss()) 69 .pipe(replace(comments.variables.in, comments.variables.out)) 70 .pipe(replace(comments.license.in, comments.license.out)) 71 .pipe(replace(comments.large.in, comments.large.out)) 72 .pipe(replace(comments.small.in, comments.small.out)) 73 .pipe(replace(comments.tiny.in, comments.tiny.out)) 74 .pipe(flatten()) 75 ; 76 77 // two concurrent streams from same source to concat release 78 uncompressedStream = stream.pipe(clone()); 79 compressedStream = stream.pipe(clone()); 80 81 uncompressedStream 82 .pipe(plumber()) 83 .pipe(replace(assets.source, assets.uncompressed)) 84 .pipe(rename(settings.rename.rtlCSS)) 85 .pipe(gulpif(config.hasPermission, chmod(config.permission))) 86 .pipe(gulp.dest(output.uncompressed)) 87 .pipe(print(log.created)) 88 .on('end', function() { 89 gulp.start('package uncompressed rtl css'); 90 }) 91 ; 92 93 compressedStream = stream 94 .pipe(plumber()) 95 .pipe(clone()) 96 .pipe(replace(assets.source, assets.compressed)) 97 .pipe(minifyCSS(settings.minify)) 98 .pipe(rename(settings.rename.rtlMinCSS)) 99 .pipe(gulpif(config.hasPermission, chmod(config.permission))) 100 .pipe(gulp.dest(output.compressed)) 101 .pipe(print(log.created)) 102 .on('end', function() { 103 callback(); 104 gulp.start('package compressed rtl css'); 105 }) 106 ; 107 108 // copy assets 109 gulp.src(source.themes + '/**/assets/**/' + globs.components + '?(s).*') 110 .pipe(gulpif(config.hasPermission, chmod(config.permission))) 111 .pipe(gulp.dest(output.themes)) 112 ; 113 114 // copy source javascript 115 gulp.src(source.definitions + '/**/' + globs.components + '.js') 116 .pipe(plumber()) 117 .pipe(flatten()) 118 .pipe(replace(comments.license.in, comments.license.out)) 119 .pipe(gulpif(config.hasPermission, chmod(config.permission))) 120 .pipe(gulp.dest(output.uncompressed)) 121 .pipe(print(log.created)) 122 .pipe(uglify(settings.uglify)) 123 .pipe(rename(settings.rename.minJS)) 124 .pipe(gulp.dest(output.compressed)) 125 .pipe(print(log.created)) 126 .on('end', function() { 127 gulp.start('package compressed js'); 128 gulp.start('package uncompressed js'); 129 }) 130 ; 131 132 };