-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathindex.js
43 lines (37 loc) · 1.21 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var less = require("less")
, through = require('through')
, path = require('path');
module.exports = function(file, opts) {
var input = '';
if (/\.less$/i.test(file) === false) {
return through();
}
function write(data) { input += data; }
function end() {
var self = this;
var lessOpts = (opts || {});
var autoInject = typeof(lessOpts['auto-inject']) == 'undefined' || !!lessOpts['auto-inject'];
function jsToLoad(css) {
var stringifiedCss = JSON.stringify(css);
if (autoInject) {
return "var css = "+ stringifiedCss +";(require('lessify'))(css); module.exports = css;";
} else {
return "module.exports = " + stringifiedCss;
}
}
lessOpts.filename = file;
lessOpts.paths = lessOpts.paths ? lessOpts.paths.concat([path.dirname(file)]) : [path.dirname(file)];
less.render(input, lessOpts, function(err, output) {
if (err) {
self.emit('error', new Error(err.message + ': ' + err.filename + '(' + err.line + ')'));
} else {
self.queue(jsToLoad(output.css));
}
output.imports.forEach(function(f) {
self.emit('file', f);
});
self.queue(null);
});
}
return through(write, end);
}