From 3c03a45b0ae00a78aae3cf234084f5b32082b563 Mon Sep 17 00:00:00 2001 From: LemonNeko Date: Sun, 15 Mar 2026 16:16:51 +0800 Subject: [PATCH] fix(cap-vite): don't auto restart when generated files update --- packages/cap-vite/src/native.test.ts | 6 ++++++ packages/cap-vite/src/native.ts | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/cap-vite/src/native.test.ts b/packages/cap-vite/src/native.test.ts index 0278c017d..ef8c09c7a 100644 --- a/packages/cap-vite/src/native.test.ts +++ b/packages/cap-vite/src/native.test.ts @@ -76,6 +76,12 @@ describe('shouldRestartForNativeChange', () => { expect(shouldRestartForNativeChange('/repo/app/src/main.ts', 'ios', '/repo/app')).toBe(false) expect(shouldRestartForNativeChange('/repo/app/ios/App/CapApp-SPM/Package.swift', 'ios', '/repo/app')).toBe(false) expect(shouldRestartForNativeChange('/repo/app/android/build/generated/file.kt', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/capacitor.settings.gradle', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/app/capacitor.build.gradle', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/app/src/main/assets/public/index.html', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/app/src/main/assets/capacitor.plugins.json', 'android', '/repo/app')).toBe(false) + expect(shouldRestartForNativeChange('/repo/app/android/app/src/main/res/xml/config.xml', 'android', '/repo/app')).toBe(false) }) it('ignores capacitor config json updates', () => { diff --git a/packages/cap-vite/src/native.ts b/packages/cap-vite/src/native.ts index f2a08f51e..01a11cffc 100644 --- a/packages/cap-vite/src/native.ts +++ b/packages/cap-vite/src/native.ts @@ -66,7 +66,14 @@ const ignoredPathPrefixesByPlatform: Record = { ios: [ ['App', 'CapApp-SPM'], ], - android: [], + android: [ + ['app', 'src', 'main', 'assets', 'public'], + ['app', 'src', 'main', 'assets', 'capacitor.plugins.json'], + ['app', 'src', 'main', 'res', 'xml', 'config.xml'], + ['app', 'capacitor.build.gradle'], + ['capacitor-cordova-android-plugins'], + ['capacitor.settings.gradle'], + ], } export function parseCapacitorPlatform(value: string | undefined): CapacitorPlatform | null { @@ -128,7 +135,8 @@ export function shouldRestartForNativeChange(file: string, platform: CapacitorPl prefix.every((segment, index) => relativeSegments[index] === segment), )) { // NOTICE: Capacitor regenerates ios/App/CapApp-SPM/Package.swift during `cap run`. - // Treating that generated tree as a native source change causes an infinite restart loop. + // It also rewrites several generated Android files and plugin trees during `cap update`. + // Treating those generated outputs as native source changes causes an infinite restart loop. return false }