-
Notifications
You must be signed in to change notification settings - Fork 383
/
ThemeUtils.js
44 lines (39 loc) · 1.11 KB
/
ThemeUtils.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
44
function LessNodeResolve(options) {
this.options = options;
}
function NodeProcessor(options) {
this.options = options || {};
}
NodeProcessor.prototype = {
process: function(src, extra) {
const [basePath] = extra.fileInfo.currentDirectory.split(this.options.path);
return src.replace(/\"~(.*)\"/g, '"' + basePath + 'dist/$1"');
}
};
LessNodeResolve.prototype = {
install: function(less, pluginManager) {
pluginManager.addPreProcessor(new NodeProcessor(this.options));
},
printUsage: function() {
// TODO
},
setOptions: function(options) {
this.options = options;
},
minVersion: [2, 4, 0]
};
const less = require('less');
module.exports = {
renderFromLess: (theme, container, path, callback) => {
less.render(theme, {
plugins: [new LessNodeResolve({path: path})],
filename: 'custom.theme.less',
compress: true
}, (e, output) => {
document.getElementById(container).innerText = output.css;
if (callback) {
callback();
}
});
}
};