1- import { dedent , defineAddon , defineAddonOptions , log } from '@sveltejs/cli-core' ;
2- import { array , exports , functions , object } from '@sveltejs/cli-core/js' ;
1+ import { dedent , defineAddon , defineAddonOptions } from '@sveltejs/cli-core' ;
2+ import { array , imports , object , vite } from '@sveltejs/cli-core/js' ;
33import { parseJson , parseScript } from '@sveltejs/cli-core/parsers' ;
44
55const options = defineAddonOptions ( )
@@ -96,6 +96,7 @@ export default defineAddon({
9696 ` ;
9797 } ) ;
9898 }
99+
99100 sv . file ( viteConfigFile , ( content ) => {
100101 const { ast, generateCode } = parseScript ( content ) ;
101102
@@ -125,19 +126,9 @@ export default defineAddon({
125126 }
126127 } ) ;
127128
128- const defineConfigFallback = functions . createCall ( { name : 'defineConfig' , args : [ ] } ) ;
129- const { value : defineWorkspaceCall } = exports . createDefault ( ast , {
130- fallback : defineConfigFallback
131- } ) ;
132- if ( defineWorkspaceCall . type !== 'CallExpression' ) {
133- log . warn ( 'Unexpected vite config. Could not update.' ) ;
134- }
129+ const viteConfig = vite . getConfig ( ast ) ;
135130
136- const vitestConfig = functions . getArgument ( defineWorkspaceCall , {
137- index : 0 ,
138- fallback : object . create ( { } )
139- } ) ;
140- const testObject = object . property ( vitestConfig , {
131+ const testObject = object . property ( viteConfig , {
141132 name : 'test' ,
142133 fallback : object . create ( {
143134 expect : {
@@ -154,6 +145,17 @@ export default defineAddon({
154145 if ( componentTesting ) array . append ( workspaceArray , clientObjectExpression ) ;
155146 if ( unitTesting ) array . append ( workspaceArray , serverObjectExpression ) ;
156147
148+ // Manage imports
149+ const importName = 'defineConfig' ;
150+ const { statement, alias } = imports . find ( ast , { name : importName , from : 'vite' } ) ;
151+ if ( statement ) {
152+ // Switch the import from 'vite' to 'vitest/config' (keeping the alias)
153+ imports . addNamed ( ast , { imports : { defineConfig : alias } , from : 'vitest/config' } ) ;
154+
155+ // Remove the old import
156+ imports . remove ( ast , { name : importName , from : 'vite' , statement } ) ;
157+ }
158+
157159 return generateCode ( ) ;
158160 } ) ;
159161 }
0 commit comments