diff --git a/packages/targets/src/ios/ios.handler.ts b/packages/targets/src/ios/ios.handler.ts index a78d3998e..7fc498fbe 100644 --- a/packages/targets/src/ios/ios.handler.ts +++ b/packages/targets/src/ios/ios.handler.ts @@ -11,6 +11,7 @@ import {getTempFileName, loadComponentModule, sourcesPath} from '../utils'; const coreIos = join(sourcesPath, 'ios'); interface IosOutput { + processedComponents: Set; imports: Set; sources: Set; dependencies: Set; @@ -65,6 +66,10 @@ const processComponentInstance = async ( output: IosOutput, namedComponentMap: NamedComponentMap, ): Promise => { + if (output.processedComponents.has(name)) { + return true; + } + const targetComponent = namedComponentMap.get(name); if (!targetComponent) { warning(`Unable to find component definition for ${name}!`); @@ -149,6 +154,7 @@ const processComponentInstance = async ( output.sources.add(filename); } + output.processedComponents.add(name); return true; }; @@ -177,6 +183,7 @@ export const iosHandler: CompilerTargetHandler = async ( ) => { const componentModule = await loadComponentModule(projectRoot); const output: IosOutput = { + processedComponents: new Set(), imports: new Set(['Foundation', 'WebKit']), sources: new Set([ join(coreIos, 'Diez.swift'),