| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*******************************
- Build Task
- *******************************/
- var
- gulp = require('gulp'),
- // node dependencies
- console = require('better-console'),
- fs = require('fs'),
- // gulp dependencies
- autoprefixer = require('gulp-autoprefixer'),
- chmod = require('gulp-chmod'),
- clone = require('gulp-clone'),
- flatten = require('gulp-flatten'),
- gulpif = require('gulp-if'),
- less = require('gulp-less'),
- minifyCSS = require('gulp-clean-css'),
- plumber = require('gulp-plumber'),
- print = require('gulp-print'),
- rename = require('gulp-rename'),
- replace = require('gulp-replace'),
- runSequence = require('run-sequence'),
- // config
- config = require('../config/user'),
- tasks = require('../config/tasks'),
- install = require('../config/project/install'),
- // shorthand
- globs = config.globs,
- assets = config.paths.assets,
- output = config.paths.output,
- source = config.paths.source,
- banner = tasks.banner,
- comments = tasks.regExp.comments,
- log = tasks.log,
- settings = tasks.settings
- ;
- // add internal tasks (concat release)
- require('../collections/internal')(gulp);
- module.exports = function(callback) {
- var
- tasksCompleted = 0,
- maybeCallback = function() {
- tasksCompleted++;
- if(tasksCompleted === 2) {
- callback();
- }
- },
- stream,
- compressedStream,
- uncompressedStream
- ;
- console.info('Building CSS');
- if( !install.isSetup() ) {
- console.error('Cannot build files. Run "gulp install" to set-up Semantic');
- return;
- }
- // unified css stream
- stream = gulp.src(source.definitions + '/**/' + globs.components + '.less')
- .pipe(plumber(settings.plumber.less))
- .pipe(less(settings.less))
- .pipe(autoprefixer(settings.prefix))
- .pipe(replace(comments.variables.in, comments.variables.out))
- .pipe(replace(comments.license.in, comments.license.out))
- .pipe(replace(comments.large.in, comments.large.out))
- .pipe(replace(comments.small.in, comments.small.out))
- .pipe(replace(comments.tiny.in, comments.tiny.out))
- .pipe(flatten())
- ;
- // two concurrent streams from same source to concat release
- uncompressedStream = stream.pipe(clone());
- compressedStream = stream.pipe(clone());
- // uncompressed component css
- uncompressedStream
- .pipe(plumber())
- .pipe(replace(assets.source, assets.uncompressed))
- .pipe(gulpif(config.hasPermission, chmod(config.permission)))
- .pipe(gulp.dest(output.uncompressed))
- .pipe(print(log.created))
- .on('end', function() {
- runSequence('package uncompressed css', maybeCallback);
- })
- ;
- // compressed component css
- compressedStream = stream
- .pipe(plumber())
- .pipe(clone())
- .pipe(replace(assets.source, assets.compressed))
- .pipe(minifyCSS(settings.minify))
- .pipe(rename(settings.rename.minCSS))
- .pipe(gulpif(config.hasPermission, chmod(config.permission)))
- .pipe(gulp.dest(output.compressed))
- .pipe(print(log.created))
- .on('end', function() {
- runSequence('package compressed css', maybeCallback);
- })
- ;
- };
|