diff --git a/lib/inline-css-url.js b/lib/inline-css-url.js index 19a95d0..5e71a82 100644 --- a/lib/inline-css-url.js +++ b/lib/inline-css-url.js @@ -1,5 +1,6 @@ var datauri = require('datauri'); var isLocalPath = require('is-local-path'); +var isTemplateExpression = require('./is-template-expression'); var path = require('path'); var postcss = require('postcss'); var postcssUrl = require('postcss-url'); @@ -33,7 +34,7 @@ var inline = function (css, filename) { var result = postcss() .use(postcssUrl({ url: function (urlPath) { - if (isLocalPath(urlPath)) { + if (isLocalPath(urlPath) && !isTemplateExpression(urlPath)) { urlPath = clean(urlPath); urlPath = path.resolve(basePath, urlPath); files.push(urlPath); diff --git a/lib/inline-img.js b/lib/inline-img.js index e7758cc..f68c1f6 100644 --- a/lib/inline-img.js +++ b/lib/inline-img.js @@ -1,6 +1,7 @@ var cheerio = require('cheerio'); var datauri = require('datauri'); var isLocalPath = require('is-local-path'); +var isTemplateExpression = require('./is-template-expression'); var path = require('path'); var inline = function (html, filename) { @@ -8,7 +9,8 @@ var inline = function (html, filename) { var basedir = path.dirname(filename); var $ = cheerio.load(html, {decodeEntities: false}); var images = $('img').filter(function (index, element) { - return isLocalPath($(element).attr('src')); + var path = $(element).attr('src'); + return isLocalPath(path) && !isTemplateExpression(path); }); images.each(function (index, element) { var src = $(element).attr('src'); diff --git a/lib/is-template-expression.js b/lib/is-template-expression.js new file mode 100644 index 0000000..d43c61b --- /dev/null +++ b/lib/is-template-expression.js @@ -0,0 +1,14 @@ +/** + * Tests whether a path is a mustache template expression. + * + * Note: would be best if this was file extension specific + * (i.e. *.hbs => test for `{{ }}` ) + * + * @param {String} path + * @return {Boolean} + */ +var isTemplateExpression = function (path) { + return /^{{.*}}$/.test(path); +}; + +module.exports = isTemplateExpression; diff --git a/test/index.js b/test/index.js index 1de3f9d..2e00dbd 100644 --- a/test/index.js +++ b/test/index.js @@ -152,6 +152,14 @@ describe('inlineHtml', function () { var html = ``; return expect(inline(html)).to.eventually.equal(html); }); + it('ignore css url template expression paths', function () { + var html = ``; + return expect(inline(html)).to.eventually.equal(html); + }); + it('ignore img src template expression paths', function () { + var html = ``; + return expect(inline(html)).to.eventually.equal(html); + }); it('ignore query strings and hashes on local paths', function () { var filename = path.resolve(__dirname, 'fixtures/file.txt'); var url = `${filename}?query=string#hash`;