fd-gulp-less
Version:
convert less file to css
44 lines (37 loc) • 1.35 kB
JavaScript
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);
};