forked from iamdustan/rework-webpack-loader
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
50 lines (40 loc) · 1.31 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
44
45
46
47
48
49
50
var Promise = require('when/es6-shim/Promise.browserify-es6');
var rework = require('rework');
var imports = require('./lib/plugins/imports');
var urls = require('./lib/plugins/urls');
var stripLocalDefs = require('./lib/plugins/strip-local-defs');
var makeVarMap = require('./lib/make-var-map');
module.exports = function(content) {
var callback = this.async();
this.cacheable();
var css = rework(content);
var plugins = this.options.rework && this.options.rework.use || [];
plugins.reduce(function(lastPromise, plugin) {
return lastPromise.then(function() {
var ret = plugin.call(this, css.obj.stylesheet, css);
return ret;
}.bind(this));
}.bind(this), Promise.resolve())
.then(function() {
var deps = Object.keys(css.imports || {})
.map(function(imprt) {
return 'require(\'' + imprt + '\');';
});
var code = css.toString();
var js = deps.concat([
'module.exports = ' + JSON.stringify(code) + ';'
])
.join('\n');
plugins.forEach(function(plugin) {
if (plugin.processJs)
js = plugin.processJs(js);
});
callback(null, js);
}, callback);
};
module.exports.plugins = {
imports: imports,
urls: urls,
stripLocalDefs: stripLocalDefs
};
module.exports.makeVarMap = makeVarMap;