UNPKG

1.16 kBJavaScriptView Raw
1// Changes relative css url()'s to point at the right location if they are going
2// to be loaded.
3var transformActiveSource = require("../node/transform_active_source");
4var path = require('path'),
5 url = require('url'),
6 cleanAddress = require("../clean_address"),
7 clone = require("lodash").clone;
8
9var isAbsoluteOrData = function( part ) {
10 return /^(data:|http:\/\/|https:\/\/|\/)/.test(part);
11};
12
13module.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 // path from out to the css file
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};