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' ;
3
3
import { parseJson , parseScript } from '@sveltejs/cli-core/parsers' ;
4
4
5
5
const options = defineAddonOptions ( )
@@ -96,6 +96,7 @@ export default defineAddon({
96
96
` ;
97
97
} ) ;
98
98
}
99
+
99
100
sv . file ( viteConfigFile , ( content ) => {
100
101
const { ast, generateCode } = parseScript ( content ) ;
101
102
@@ -125,19 +126,9 @@ export default defineAddon({
125
126
}
126
127
} ) ;
127
128
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 ) ;
135
130
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 , {
141
132
name : 'test' ,
142
133
fallback : object . create ( {
143
134
expect : {
@@ -154,6 +145,17 @@ export default defineAddon({
154
145
if ( componentTesting ) array . append ( workspaceArray , clientObjectExpression ) ;
155
146
if ( unitTesting ) array . append ( workspaceArray , serverObjectExpression ) ;
156
147
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
+
157
159
return generateCode ( ) ;
158
160
} ) ;
159
161
}
0 commit comments