From a6e2ea08791a79906bc2f6a3d0b08b9f0745b6df Mon Sep 17 00:00:00 2001 From: MDLeom <43627182+curbengh@users.noreply.github.com> Date: Sun, 6 Nov 2022 02:54:55 +0000 Subject: [PATCH] fix(svg): svgo@3 now throws error - cleanupIDs -> cleanupIds - https://github.com/svg/svgo/releases/tag/v3.0.0 --- README.md | 2 +- lib/filter.js | 16 ++++++++++------ test/svg.test.js | 14 +++++++++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e79ea49..9c274af 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ minify: # Retain comments removeComments: false # Do not remove unused ID attributes - cleanupIDs: false + cleanupIds: false ``` - For more options, see [svgo](https://github.com/svg/svgo). - **globOptions** - See [globbing](#globbing) section. diff --git a/lib/filter.js b/lib/filter.js index dd2d2d5..ecec928 100644 --- a/lib/filter.js +++ b/lib/filter.js @@ -152,12 +152,16 @@ function minifySvg () { assetPath.on('data', (chunk) => (assetTxt += chunk)) assetPath.on('end', async () => { if (assetTxt.length) { - const { data, error } = svgOptimize(assetTxt, { ...options, plugins }) - if (data) { - if (verbose) logFn.call(this, assetTxt, data, path, 'svg') - resolve(route.set(path, data)) - } else if (error) { - reject(new Error(`Path: ${path}\n${error}`)) + try { + const { data } = svgOptimize(assetTxt, { ...options, plugins }) + if (data) { + if (verbose) logFn.call(this, assetTxt, data, path, 'svg') + resolve(route.set(path, data)) + } else { + reject(new Error(`Path: ${path}\nEmpty svg input`)) + } + } catch (err) { + reject(new Error(`Path: ${path}\n${err}`)) } } resolve() diff --git a/test/svg.test.js b/test/svg.test.js index 9a4b2ea..83c2866 100644 --- a/test/svg.test.js +++ b/test/svg.test.js @@ -71,7 +71,7 @@ describe('svg', () => { test('option', async () => { const customOpt = { - cleanupIDs: false + cleanupIds: false } hexo.config.minify.svg.plugins = customOpt plugins = [{ @@ -117,10 +117,14 @@ describe('svg', () => { const input = '{}' hexo.route.set(path, input) - const { error } = svgOptimize(input, { plugins }) - - expect(error).toBeDefined() - await expect(s()).rejects.toThrow(`Path: ${path}\n${error}`) + let expected + try { + svgOptimize(input, { plugins }) + } catch (err) { + expected = err + } + expect(expected).toBeDefined() + await expect(s()).rejects.toThrow(`Path: ${path}\n${expected}`) }) test('include - exclude *.min.svg by default', async () => {