From a6f59a9704a96316dc07cf430defef1d25acab89 Mon Sep 17 00:00:00 2001 From: curbengh <43627182+curbengh@users.noreply.github.com> Date: Tue, 6 Aug 2019 11:26:11 +0930 Subject: [PATCH] feat: disable basename globbing when pattern contains slash --- lib/filter.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/filter.js b/lib/filter.js index b5df494..1ee9620 100644 --- a/lib/filter.js +++ b/lib/filter.js @@ -26,6 +26,10 @@ function logicHtml (str, data) { const exclude = options.exclude const globOptions = options.globOptions + let excludeString = exclude + if (Array.isArray(exclude)) excludeString = exclude.join('') + if (excludeString.includes('/')) globOptions.basename = false + // Return if a path matches exclusion pattern if (isMatch(path, exclude, globOptions)) return str @@ -47,6 +51,10 @@ function logicCss (str, data) { const exclude = options.exclude const globOptions = options.globOptions + let excludeString = exclude + if (exclude && Array.isArray(exclude)) excludeString = exclude.join('') + if (excludeString && excludeString.includes('/')) globOptions.basename = false + if (isMatch(path, exclude, globOptions)) return str return new Promise((resolve, reject) => { @@ -71,6 +79,10 @@ function logicJs (str, data) { const exclude = options.exclude const globOptions = options.globOptions + let excludeString = exclude + if (exclude && Array.isArray(exclude)) excludeString = exclude.join('') + if (excludeString && excludeString.includes('/')) globOptions.basename = false + if (isMatch(path, exclude, globOptions)) return str // Terser doesn't like unsupported options @@ -100,6 +112,10 @@ function logicSvg () { let include = options.include const globOptions = options.globOptions + let includeString = include + if (include && Array.isArray(include)) includeString = include.join('') + if (includeString && includeString.includes('/')) globOptions.basename = false + return Promise.all((micromatch(routeList, include, globOptions)).map(path => { return new Promise((resolve, reject) => { // Grab all assets using hexo router @@ -138,6 +154,10 @@ function logicGzip () { let include = options.include const globOptions = options.globOptions + let includeString = include + if (include && Array.isArray(include)) includeString = include.join('') + if (includeString && includeString.includes('/')) globOptions.basename = false + return Promise.all((micromatch(routeList, include, globOptions)).map(path => { return new Promise((resolve, reject) => { // Grab all assets using hexo router @@ -180,6 +200,10 @@ function logicBrotli () { let include = options.include const globOptions = options.globOptions + let includeString = include + if (include && Array.isArray(include)) includeString = include.join('') + if (includeString && includeString.includes('/')) globOptions.basename = false + return Promise.all((micromatch(routeList, include, globOptions)).map(path => { return new Promise((resolve, reject) => { // Grab all assets using hexo router