From 785c141bf09ee024935a14897446ef0e2ea95210 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 25 Aug 2021 23:46:09 +0800 Subject: [PATCH] feat: new presetOverriding option --- src/core/options.ts | 6 +++--- src/types.ts | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/options.ts b/src/core/options.ts index 9a239d3..00a1690 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -5,7 +5,7 @@ import { presets } from '../presets' import { ImportInfo, ImportsFlatMap, Options, ResolvedOptions } from '../types' export function resolveOptions(options: Options = {}): ResolvedOptions { - const imports = flattenImportsMap(options.imports) + const imports = flattenImportsMap(options.imports, options.presetOverriding) const resolved: ResolvedOptions = { ...options, dts: options.dts === false @@ -22,7 +22,7 @@ export function resolveOptions(options: Options = {}): ResolvedOptions { return resolved } -export function flattenImportsMap(map: Options['imports']): ImportsFlatMap { +export function flattenImportsMap(map: Options['imports'], overriding = false): ImportsFlatMap { const flat: ImportsFlatMap = {} toArray(map).forEach((definition) => { if (typeof definition === 'string') { @@ -45,7 +45,7 @@ export function flattenImportsMap(map: Options['imports']): ImportsFlatMap { meta.name = id } - if (flat[meta.name]) + if (flat[meta.name] && !overriding) throw new Error(`[auto-import] identifier ${meta.name} already defined with ${flat[meta.name].module}`) flat[meta.name] = meta diff --git a/src/types.ts b/src/types.ts index 46126c1..9b663a2 100644 --- a/src/types.ts +++ b/src/types.ts @@ -32,6 +32,12 @@ export interface Options { * @default './auto-imports.d.ts' */ dts?: string | false + /** + * Allow overriding imports sources from multiple presets. + * + * @default false + */ + presetOverriding?: boolean /** * Rules to include transforming target. *