Fixed bug where query strings and hashes were not ignored on css url data type local paths.

This commit is contained in:
Alexandre Gigliotti
2015-08-25 15:08:53 -07:00
parent e8545de30a
commit 251431a110

View File

@@ -1,21 +1,43 @@
var _ = require('lodash');
var datauri = require('datauri'); var datauri = require('datauri');
var isLocalPath = require('is-local-path'); var isLocalPath = require('is-local-path');
var path = require('path'); var path = require('path');
var postcss = require('postcss'); var postcss = require('postcss');
var url = require('postcss-url'); var postcssUrl = require('postcss-url');
var url = require('url');
/**
* Returns url path without query string and hash if present.
*
* @param path
*
* @returns path
*/
var clean = function (path) {
path = url.parse(path);
path = _.pick(path, ['protocol', 'host', 'pathname']);
return url.format(path);
};
/**
* Convert local url data type paths to datauris.
*
* @param css
* @param filename
* @returns {{css: (css|any), files: Array}}
*/
var inline = function (css, filename) { var inline = function (css, filename) {
var files = []; var files = [];
var basePath = path.dirname(filename); var basePath = path.dirname(filename);
var result = postcss() var result = postcss()
.use(url({ .use(postcssUrl({
url: function (url) { url: function (urlPath) {
if (isLocalPath(url)) { if (isLocalPath(urlPath)) {
url = path.resolve(basePath, url); urlPath = clean(urlPath);
files.push(url); urlPath = path.resolve(basePath, urlPath);
url = datauri(url); files.push(urlPath);
urlPath = datauri(urlPath);
} }
return url; return urlPath;
} }
})) }))
.process(css); .process(css);