1 |
|
2 |
|
3 | var transformActiveSource = require("../node/transform_active_source");
|
4 | var path = require('path'),
|
5 | url = require('url'),
|
6 | cleanAddress = require("../clean_address"),
|
7 | clone = require("lodash").clone;
|
8 |
|
9 | var isAbsoluteOrData = function( part ) {
|
10 | return /^(data:|http:\/\/|https:\/\/|\/)/.test(part);
|
11 | };
|
12 |
|
13 | module.exports = function(bundle, outPath){
|
14 | var outDirname = path.dirname(outPath);
|
15 |
|
16 | if(bundle.buildType === 'css') {
|
17 |
|
18 | bundle.nodes.forEach(function(node){
|
19 |
|
20 |
|
21 | var pathToCss = path.relative(outDirname, path.dirname(cleanAddress(node.load.address)) )+"/";
|
22 | transformActiveSource(node,"normalized-"+outPath, function(node, source){
|
23 | source = clone(source);
|
24 | var code = source.code;
|
25 | source.code = code.replace(/url\(['"]?([^'"\)]*)['"]?\)/g, function( whole, part ) {
|
26 | if(isAbsoluteOrData(part)) {
|
27 | return whole;
|
28 | } else {
|
29 | return "url(" +url.resolve( pathToCss, part) + ")";
|
30 | }
|
31 | });
|
32 | source.map = source.map || node.load.metadata.map;
|
33 | return source;
|
34 | });
|
35 | });
|
36 | }
|
37 |
|
38 | };
|