From 43a316d14954b117d322c25bcaf901c9ad959ffd Mon Sep 17 00:00:00 2001 From: curbengh <43627182+curbengh@users.noreply.github.com> Date: Tue, 6 Aug 2019 11:23:58 +0930 Subject: [PATCH 1/2] refactor: use basename instead of matchBase --- index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 4e3fcd8..40eae3e 100644 --- a/index.js +++ b/index.js @@ -17,7 +17,7 @@ if (hexo.config.neat_enable === true) { removeStyleLinkTypeAttributes: true, minifyJS: true, minifyCSS: true, - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_html) // CSS minifier @@ -26,7 +26,7 @@ if (hexo.config.neat_enable === true) { logger: false, exclude: ['*.min.css'], level: 2, - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_css) // Javascript minifier @@ -37,7 +37,7 @@ if (hexo.config.neat_enable === true) { compress: {}, mangle: true, output: {}, - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_js) // SVG minifier @@ -46,7 +46,7 @@ if (hexo.config.neat_enable === true) { logger: false, include: ['*.svg', '!*.min.svg'], plugins: [], - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_svg) // gzip compression @@ -54,7 +54,7 @@ if (hexo.config.neat_enable === true) { enable: true, logger: false, include: ['*.html', '*.css', '*.js', '*.txt', '*.ttf', '*.atom', '*.stl', '*.xml', '*.svg', '*.eot', '*.json'], - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_gzip) // brotli compression @@ -62,7 +62,7 @@ if (hexo.config.neat_enable === true) { enable: true, logger: false, include: ['*.html', '*.css', '*.js', '*.txt', '*.ttf', '*.atom', '*.stl', '*.xml', '*.svg', '*.eot', '*.json'], - globOptions: { matchBase: true } + globOptions: { basename: true } }, hexo.config.neat_brotli) const filter = require('./lib/filter') 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 2/2] 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