UNPKG

fd-gulp-less

Version:

convert less file to css

44 lines (37 loc) 1.35 kB
var less = require('less'); var through2 = require('through2'); var gutil = require('gulp-util'); var PluginError = gutil.PluginError; var path = require('path'); var constants = require('./assets/constants'); var iconv = require('iconv-lite'); module.exports = function (srcDir, options) { function transform (file, enc, callback) { var self = this; if (file.isNull()) return; if (file.isStream()) return this.emit('error', new PluginError(constants.PLUGIN_NAME, 'STYLE_BUILD_ERR: Streaming not supported')); //是否有跳过编译选项,如果没有,则进行编译 if(!constants.EXCEPT_COMPIRE_FLAG.test(file.contents)){ var fileContent = iconv.decode(file.contents, 'GBK'); var opts = options || {}; opts.filename = file.path; less.render(fileContent, opts, function (err, css) { if (err) { err.lineNumber = err.line; err.fileName = err.filename; err.message = err.message + ' in file ' + err.fileName + ' line no. ' + err.lineNumber; self.emit('error', new PluginError('fd-gulp-less', err)); } else { file.contents = iconv.encode(css, 'GBK'); file.path = gutil.replaceExtension(file.path, '.css'); self.push(file); callback(); } }); }else{ self.push(file); callback(); } } return through2.obj(transform); };