'use strict' const fs = require('fs') const gulp = require('gulp') const _less = require('less') const less = require('gulp-less') const sourcemaps = require('gulp-sourcemaps') const rename = require('gulp-rename') const mkdirp = require('mkdirp') const postcss = require('gulp-postcss') const autoprefixer = require('autoprefixer') const config = require('../config').less const errorHandler = require('../util/error-handler') _less.functions.functionRegistry.addMultiple(config.functions) const processors = [ autoprefixer(config.autoprefixer), ] if (ENV === 'production') { const csswring = require('csswring') processors.push(csswring(config.csswring)) } const suffix = config.suffix && ENV === 'production' ? '-' + Date.now().toString(16) : undefined gulp.task('less', function () { mkdirp(config.dest) if (suffix) fs.writeFile(config.dest + '.json', JSON.stringify({ suffix })) let pipe = gulp.src(config.src) .pipe(sourcemaps.init()) .pipe(less(config.options).on('error', errorHandler)) .pipe(postcss(processors)) if (suffix) pipe = pipe.pipe(rename({ suffix })) return pipe.pipe(sourcemaps.write('./maps')) .pipe(gulp.dest(config.dest)) })