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