From c4c4fbf3708f568f1b93f7d54cd46223869238dc Mon Sep 17 00:00:00 2001 From: JW Date: Sun, 3 Sep 2023 17:11:15 +0800 Subject: [PATCH] :sparkles: support svgo implemention --- src/index.ts | 15 ++++++++++----- src/type.ts | 10 ++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 src/type.ts diff --git a/src/index.ts b/src/index.ts index 39f8181..2612600 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,15 +3,15 @@ * Copyright 2017 Smooth Code */ -import type { Config, State } from '@svgr-rs/core' +import type { State } from '@svgr-rs/core' +import type SvgoInstance from 'svgo' +import type { Config } from './type' /** * @todo Load svgo config from config file */ export const getSvgoConfig = (config: Config): any => { - // @ts-expect-error -- ignore if (config.svgoConfig) { - // @ts-expect-error -- ignore return config.svgoConfig } return {} @@ -21,9 +21,14 @@ export const svgo = async (code: string, config: Config, state: State) => { if (!config.svgo) { return code } - const { optimize } = await import('svgo') + let svgoInstance: typeof SvgoInstance + if (config.svgoImplementation) { + svgoInstance = config.svgoImplementation + } else { + svgoInstance = await import('svgo') + } const svgoConfig = getSvgoConfig(config) - const result = optimize(code, { ...svgoConfig, path: state.filePath }) + const result = svgoInstance.optimize(code, { ...svgoConfig, path: state.filePath }) // @ts-expect-error -- ignore if (result.modernError) { diff --git a/src/type.ts b/src/type.ts new file mode 100644 index 0000000..33154f2 --- /dev/null +++ b/src/type.ts @@ -0,0 +1,10 @@ +import type { Config as SvgrsConfig } from '@svgr-rs/core' + +export interface Config extends SvgrsConfig { + /** + * @description Extended config options for @svgr-rs/core, load custom svgo implementation + */ + svgoImplementation?: any + // svgoConfig is hidden in @svgr-rs/core + svgoConfig?: any +}