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  };