Plato on Github
Report Home
less.js
Maintainability
64.73
Lines of code
104
Difficulty
16.00
Estimated Errors
0.88
Function weight
By Complexity
By SLOC
'use strict'; var gulp = require('gulp'); var _ = require('lodash'); var path = require('path'); var $ = require('gulp-load-plugins')({ config: path.normalize(__dirname + '/../package.json') }); var config = { compile: './src/assets/less/project.less', name: 'project', srcs: './src/assets/less/**/*', bundle: [], dest: { css: './build/assets/css', less: './build/assets/less' } }; var AUTOPREFIXER_BROWSERS = [ 'ie >= 10', 'ie_mob >= 10', 'ff >= 30', 'chrome >= 34', 'safari >= 7', 'opera >= 23', 'ios >= 7', 'android >= 4.4', 'bb >= 10' ]; function less(options) { var settings = _.extend(config, options); var task = { desc: 'Compile and copy styles to build folder', subtasks: [{ name: 'compile', callback: compile },{ name: 'bundle', callback: bundle },{ name: 'copy', callback: copy }] }; //////////////// // Compile less styles function compile() { return gulp.src(settings.compile) .pipe($.less()) .on('error', console.error.bind(console)) .pipe($.autoprefixer({browsers: AUTOPREFIXER_BROWSERS})) .pipe($.rename(settings.name+'.css')) .pipe(gulp.dest(settings.dest.css)) .pipe($.minifyCss({ keepSpecialComments: 0, keepBreaks: false, processImport: true })) .pipe($.rename(settings.name+'.min.css')) .pipe(gulp.dest(settings.dest.css)) .pipe($.size({title: 'styles:compile'})); } // Bundle sources and 3th libs function bundle() { if (!settings.bundle.length) { return gulp.src('./') .pipe($.size({title: 'styles:bundle'})); } settings.bundle.push(settings.dest.css+'/'+settings.name+'.css'); return gulp.src(settings.bundle) .pipe($.concat(settings.name+'.bundle.css')) .pipe($.minifyCss({ keepSpecialComments: 0, keepBreaks: false, processImport: true })) .pipe($.rename(settings.name+'.bundle.css')) .pipe(gulp.dest(settings.dest.css)) .pipe($.size({title: 'styles:bundle'})); } // Copy less sources function copy() { return gulp.src(settings.srcs) .pipe(gulp.dest(settings.dest.less)) .pipe($.size({title: 'styles:copy'})); } //////////////// return task; } module.exports = less;