@@ -220,27 +220,24 @@ function getPartialVueCompilerOptions(
220
220
}
221
221
}
222
222
223
- export function resolveVueCompilerOptions ( vueOptions : Partial < VueCompilerOptions > ) : VueCompilerOptions {
224
- const target = vueOptions . target ?? 3.3 ;
225
- const lib = vueOptions . lib ?? 'vue' ;
223
+ function getDefaultOptions ( options : Partial < VueCompilerOptions > ) : VueCompilerOptions {
224
+ const target = options . target ?? 3.3 ;
225
+ const lib = options . lib ?? 'vue' ;
226
226
return {
227
- ...vueOptions ,
228
227
target,
229
- extensions : vueOptions . extensions ?? [ '.vue' ] ,
230
- vitePressExtensions : vueOptions . vitePressExtensions ?? [ ] ,
231
- petiteVueExtensions : vueOptions . petiteVueExtensions ?? [ ] ,
232
228
lib,
233
- jsxSlots : vueOptions . jsxSlots ?? false ,
234
- strictTemplates : vueOptions . strictTemplates ?? false ,
235
- skipTemplateCodegen : vueOptions . skipTemplateCodegen ?? false ,
236
- fallthroughAttributes : vueOptions . fallthroughAttributes ?? false ,
237
- dataAttributes : vueOptions . dataAttributes ?? [ ] ,
238
- htmlAttributes : vueOptions . htmlAttributes ?? [ 'aria-*' ] ,
239
- optionsWrapper : vueOptions . optionsWrapper ?? (
240
- target >= 2.7
241
- ? [ `(await import('${ lib } ')).defineComponent(` , `)` ]
242
- : [ `(await import('${ lib } ')).default.extend(` , `)` ]
243
- ) ,
229
+ extensions : [ '.vue' ] ,
230
+ vitePressExtensions : [ ] ,
231
+ petiteVueExtensions : [ ] ,
232
+ jsxSlots : false ,
233
+ strictTemplates : false ,
234
+ skipTemplateCodegen : false ,
235
+ fallthroughAttributes : false ,
236
+ dataAttributes : [ ] ,
237
+ htmlAttributes : [ 'aria-*' ] ,
238
+ optionsWrapper : target >= 2.7
239
+ ? [ `(await import('${ lib } ')).defineComponent(` , `)` ]
240
+ : [ `(await import('${ lib } ')).default.extend(` , `)` ] ,
244
241
macros : {
245
242
defineProps : [ 'defineProps' ] ,
246
243
defineSlots : [ 'defineSlots' ] ,
@@ -249,24 +246,40 @@ export function resolveVueCompilerOptions(vueOptions: Partial<VueCompilerOptions
249
246
defineModel : [ 'defineModel' ] ,
250
247
defineOptions : [ 'defineOptions' ] ,
251
248
withDefaults : [ 'withDefaults' ] ,
252
- ...vueOptions . macros ,
253
249
} ,
254
250
composables : {
255
251
useAttrs : [ 'useAttrs' ] ,
256
252
useCssModule : [ 'useCssModule' ] ,
257
253
useSlots : [ 'useSlots' ] ,
258
254
useTemplateRef : [ 'useTemplateRef' , 'templateRef' ] ,
259
- ...vueOptions . composables ,
260
255
} ,
261
- plugins : vueOptions . plugins ?? [ ] ,
256
+ plugins : [ ] ,
257
+ experimentalDefinePropProposal : false ,
258
+ experimentalResolveStyleCssClasses : 'scoped' ,
259
+ experimentalModelPropName : null !
260
+ } ;
261
+ } ;
262
+
263
+ export function resolveVueCompilerOptions (
264
+ options : Partial < VueCompilerOptions > ,
265
+ defaults : VueCompilerOptions = getDefaultOptions ( options )
266
+ ) : VueCompilerOptions {
267
+ return {
268
+ ...defaults ,
269
+ ...options ,
270
+ macros : {
271
+ ...defaults . macros ,
272
+ ...options . macros ,
273
+ } ,
274
+ composables : {
275
+ ...defaults . composables ,
276
+ ...options . composables ,
277
+ } ,
262
278
263
- // experimental
264
- experimentalDefinePropProposal : vueOptions . experimentalDefinePropProposal ?? false ,
265
- experimentalResolveStyleCssClasses : vueOptions . experimentalResolveStyleCssClasses ?? 'scoped' ,
266
279
// https://github.com/vuejs/vue-next/blob/master/packages/compiler-dom/src/transforms/vModel.ts#L49-L51
267
280
// https://vuejs.org/guide/essentials/forms.html#form-input-bindings
268
281
experimentalModelPropName : Object . fromEntries ( Object . entries (
269
- vueOptions . experimentalModelPropName ?? {
282
+ options . experimentalModelPropName ?? defaults . experimentalModelPropName ?? {
270
283
'' : {
271
284
input : true
272
285
} ,
@@ -301,4 +314,4 @@ export function setupGlobalTypes(rootDir: string, vueOptions: VueCompilerOptions
301
314
host . writeFile ( globalTypesPath , globalTypesContents ) ;
302
315
return { absolutePath : globalTypesPath } ;
303
316
} catch { }
304
- }
317
+ }
0 commit comments