| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- /*******************************
- Serve Docs
- *******************************/
- 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'),
- gulpif = require('gulp-if'),
- header = require('gulp-header'),
- 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'),
- uglify = require('gulp-uglify'),
- util = require('gulp-util'),
- watch = require('gulp-watch'),
- // user config
- config = require('../config/docs'),
- // task config
- tasks = require('../config/tasks'),
- configSetup = require('../config/project/config'),
- install = require('../config/project/install'),
- // shorthand
- banner = tasks.banner,
- comments = tasks.regExp.comments,
- log = tasks.log,
- settings = tasks.settings,
- globs,
- assets,
- output,
- source
- ;
- require('../collections/internal')(gulp);
- module.exports = function () {
- // use a different config
- config = configSetup.addDerivedValues(config);
- // shorthand
- globs = config.globs;
- assets = config.paths.assets;
- output = config.paths.output;
- source = config.paths.source;
- /*--------------
- Copy Source
- ---------------*/
- gulp
- .watch([
- 'src/**/*.*'
- ], function(file) {
- console.clear();
- return gulp.src(file.path, {
- base: 'src/'
- })
- .pipe(gulp.dest(output.less))
- .pipe(print(log.created))
- ;
- })
- ;
- /*--------------
- Copy Examples
- ---------------*/
- gulp
- .watch([
- 'examples/**/*.*'
- ], function(file) {
- console.clear();
- return gulp.src(file.path, {
- base: 'examples/'
- })
- .pipe(gulp.dest(output.examples))
- .pipe(print(log.created))
- ;
- })
- ;
- /*--------------
- Watch CSS
- ---------------*/
- gulp
- .watch([
- source.config,
- source.definitions + '/**/*.less',
- source.site + '/**/*.{overrides,variables}',
- source.themes + '/**/*.{overrides,variables}'
- ], function(file) {
- var
- lessPath,
- stream,
- compressedStream,
- uncompressedStream,
- isDefinition,
- isPackagedTheme,
- isSiteTheme,
- isConfig
- ;
- // log modified file
- gulp.src(file.path)
- .pipe(print(log.modified))
- ;
- /*--------------
- Find Source
- ---------------*/
- // recompile on *.override , *.variable change
- isConfig = (file.path.indexOf('theme.config') !== -1 || file.path.indexOf('site.variables') !== -1);
- isPackagedTheme = (file.path.indexOf(source.themes) !== -1);
- isSiteTheme = (file.path.indexOf(source.site) !== -1);
- isDefinition = (file.path.indexOf(source.definitions) !== -1);
- if(isConfig) {
- // console.info('Rebuilding all files');
- // cant rebuild paths are wrong
- // gulp.start('build-docs');
- return;
- }
- else if(isPackagedTheme) {
- console.log('Change detected in packaged theme');
- lessPath = util.replaceExtension(file.path, '.less');
- lessPath = lessPath.replace(tasks.regExp.theme, source.definitions);
- }
- else if(isSiteTheme) {
- console.log('Change detected in site theme');
- lessPath = util.replaceExtension(file.path, '.less');
- lessPath = lessPath.replace(source.site, source.definitions);
- }
- else {
- console.log('Change detected in definition');
- lessPath = file.path;
- }
- /*--------------
- Create CSS
- ---------------*/
- if( fs.existsSync(lessPath) ) {
- // unified css stream
- stream = gulp.src(lessPath)
- .pipe(plumber())
- .pipe(less(settings.less))
- .pipe(replace(comments.variables.in, comments.variables.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(autoprefixer(settings.prefix))
- .pipe(gulpif(config.hasPermission, chmod(config.permission)))
- ;
- // use 2 concurrent streams from same pipe
- uncompressedStream = stream.pipe(clone());
- compressedStream = stream.pipe(clone());
- uncompressedStream
- .pipe(plumber())
- .pipe(replace(assets.source, assets.uncompressed))
- .pipe(header(banner, settings.header))
- .pipe(gulp.dest(output.uncompressed))
- .pipe(print(log.created))
- .on('end', function() {
- gulp.start('package uncompressed docs css');
- })
- ;
- compressedStream = stream
- .pipe(plumber())
- .pipe(replace(assets.source, assets.compressed))
- .pipe(minifyCSS(settings.minify))
- .pipe(rename(settings.rename.minCSS))
- .pipe(header(banner, settings.header))
- .pipe(gulp.dest(output.compressed))
- .pipe(print(log.created))
- .on('end', function() {
- gulp.start('package compressed docs css');
- })
- ;
- }
- else {
- console.log('Cannot find UI definition at path', lessPath);
- }
- })
- ;
- /*--------------
- Watch JS
- ---------------*/
- gulp
- .watch([
- source.definitions + '/**/*.js'
- ], function(file) {
- gulp.src(file.path)
- .pipe(plumber())
- .pipe(gulpif(config.hasPermission, chmod(config.permission)))
- .pipe(gulp.dest(output.uncompressed))
- .pipe(print(log.created))
- .pipe(uglify(settings.uglify))
- .pipe(rename(settings.rename.minJS))
- .pipe(gulp.dest(output.compressed))
- .pipe(print(log.created))
- .on('end', function() {
- gulp.start('package compressed docs js');
- gulp.start('package uncompressed docs js');
- })
- ;
- })
- ;
- /*--------------
- Watch Assets
- ---------------*/
- // only copy assets that match component names (or their plural)
- gulp
- .watch([
- source.themes + '/**/assets/**/' + globs.components + '?(s).*'
- ], function(file) {
- // copy assets
- gulp.src(file.path, { base: source.themes })
- .pipe(gulpif(config.hasPermission, chmod(config.permission)))
- .pipe(gulp.dest(output.themes))
- .pipe(print(log.created))
- ;
- })
- ;
- };
|