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