({ mode, flavor }: { mode: string; flavor?: string })
| 102 | type PlatformType = 'android' | 'ios' | 'visionos'; |
| 103 | |
| 104 | export const baseConfig = ({ mode, flavor }: { mode: string; flavor?: string }): UserConfig => { |
| 105 | const targetMode = mode === 'development' ? 'development' : 'production'; |
| 106 | |
| 107 | const cliFlags = getCliFlags(); |
| 108 | const verbose = resolveVerboseFlag({ env: process.env, cliFlags }); |
| 109 | // console.log("cliFlags:", cliFlags); |
| 110 | const isDevMode = targetMode === 'development'; |
| 111 | const debug = !!process.env.DEBUG || isDevMode; |
| 112 | const hmrActive = isDevMode && !!cliFlags.hmr; |
| 113 | let platform = cliFlags.platform as PlatformType; |
| 114 | if (cliFlags.android) { |
| 115 | platform = 'android'; |
| 116 | } else if (cliFlags.ios) { |
| 117 | platform = 'ios'; |
| 118 | } else if (cliFlags.visionos) { |
| 119 | platform = 'visionos'; |
| 120 | } |
| 121 | if (verbose) { |
| 122 | console.log('--------------'); |
| 123 | // console.log("Vite config mode:", mode); |
| 124 | console.log('Platform:', platform); |
| 125 | console.log('Mode:', targetMode); |
| 126 | console.log('HMR active:', hmrActive); |
| 127 | console.log('--------------'); |
| 128 | } |
| 129 | |
| 130 | flavor = flavor || (getProjectFlavor() as string); |
| 131 | if (verbose) { |
| 132 | console.log(`Building for ${flavor}.`); |
| 133 | } |
| 134 | |
| 135 | // Filtered logger to suppress noisy warnings |
| 136 | const filteredLogger = createFilteredViteLogger(); |
| 137 | |
| 138 | // Create TypeScript aliases with platform support |
| 139 | const tsConfig = getTsConfigData({ platform, verbose }); |
| 140 | |
| 141 | // Common resolve configuration for both main and worker builds |
| 142 | // Build platform-aware extension preference order and exclude the opposite platform |
| 143 | const platformExtensions = (() => { |
| 144 | const base = ['.tsx', '.jsx', '.ts', '.js'] as const; |
| 145 | const exts: string[] = []; |
| 146 | if (platform === 'android') { |
| 147 | exts.push('.android.tsx', '.tsx', '.android.jsx', '.jsx', '.android.ts', '.ts', '.android.js', '.js'); |
| 148 | } else if (platform === 'ios' || platform === 'visionos') { |
| 149 | // Treat visionOS like iOS for file resolution |
| 150 | exts.push('.ios.tsx', '.tsx', '.ios.jsx', '.jsx', '.ios.ts', '.ts', '.ios.js', '.js'); |
| 151 | } else { |
| 152 | // Fallback: no platform-specific preference |
| 153 | exts.push(...base); |
| 154 | } |
| 155 | // Always allow these last |
| 156 | exts.push('.mjs', '.json'); |
| 157 | return exts; |
| 158 | })(); |
| 159 | |
| 160 | // Dynamic aliases for nativescript-theme-core generic theme filenames |
| 161 | // TODO: move to per-project basis based on usage |
no test coverage detected