@@ -52,6 +52,9 @@ export default defineNuxtModule<VeeValidateNuxtOptions>({
52
52
componentNames : { } ,
53
53
} ,
54
54
setup ( options , nuxt ) {
55
+ addMjsAlias ( 'vee-validate' , 'vee-validate' , nuxt ) ;
56
+ prepareVeeValidate ( nuxt ) ;
57
+
55
58
if ( options . autoImports ) {
56
59
composables . forEach ( composable => {
57
60
addImports ( {
@@ -94,8 +97,6 @@ export default defineNuxtModule<VeeValidateNuxtOptions>({
94
97
checkForValibot ( options , nuxt ) ;
95
98
}
96
99
}
97
-
98
- addMjsAlias ( 'vee-validate' , 'vee-validate' , nuxt ) ;
99
100
} ,
100
101
} ) as NuxtModule < VeeValidateNuxtOptions > ;
101
102
@@ -192,3 +193,15 @@ declare module '@nuxt/schema' {
192
193
'vee-validate' ?: VeeValidateNuxtOptions ;
193
194
}
194
195
}
196
+
197
+ /**
198
+ * Excludes vee-validate and vee-validate/rules from the optimization process.
199
+ * The optimization process causes issues with the symbols export not matching between the module components and the main vee-validate package.
200
+ * Maybe it is because vite chunks them in different files/sources.
201
+ * Only happens with SSR tho, SPA works.
202
+ */
203
+ function prepareVeeValidate ( nuxt : Nuxt ) {
204
+ nuxt . options . vite . optimizeDeps = nuxt . options . vite . optimizeDeps || { } ;
205
+ nuxt . options . vite . optimizeDeps . exclude = nuxt . options . vite . optimizeDeps . exclude || [ ] ;
206
+ nuxt . options . vite . optimizeDeps . exclude . push ( 'vee-validate' , '@vee-validate/rules' ) ;
207
+ }
0 commit comments