diff --git a/vite-plugin/src/vue-transform.js b/vite-plugin/src/vue-transform.js index b3d39f6dcb9..0fcb4adb89f 100755 --- a/vite-plugin/src/vue-transform.js +++ b/vite-plugin/src/vue-transform.js @@ -4,20 +4,37 @@ import { readFileSync } from 'node:fs' import { quasarPath } from './quasar-path.js' import { mapQuasarImports, removeQuasarImports, importTransformation } from './js-transform.js' -const autoImportData = JSON.parse( - readFileSync(join(quasarPath, 'dist/transforms/auto-import.json'), 'utf-8') -) - -const compRegex = { - kebab: new RegExp(`_resolveComponent\\("${ autoImportData.regex.kebabComponents }"\\)`, 'g'), - pascal: new RegExp(`_resolveComponent\\("${ autoImportData.regex.pascalComponents }"\\)`, 'g'), - combined: new RegExp(`_resolveComponent\\("${ autoImportData.regex.components }"\\)`, 'g') +let transformState +function useTransformState () { + if (transformState !== void 0) { + return transformState + } + + const autoImportData = JSON.parse( + readFileSync(join(quasarPath, 'dist/transforms/auto-import.json'), 'utf-8') + ) + + const compRegex = { + kebab: new RegExp(`_resolveComponent\\("${ autoImportData.regex.kebabComponents }"\\)`, 'g'), + pascal: new RegExp(`_resolveComponent\\("${ autoImportData.regex.pascalComponents }"\\)`, 'g'), + combined: new RegExp(`_resolveComponent\\("${ autoImportData.regex.components }"\\)`, 'g') + } + + const dirRegex = new RegExp(`_resolveDirective\\("${ autoImportData.regex.directives.replace(/v-/g, '') }"\\)`, 'g') + + transformState = { + autoImportData, + compRegex, + dirRegex + } + return transformState } -const dirRegex = new RegExp(`_resolveDirective\\("${ autoImportData.regex.directives.replace(/v-/g, '') }"\\)`, 'g') const lengthSortFn = (a, b) => b.length - a.length export function vueTransform (content, autoImportComponentCase, useTreeshaking) { + const { autoImportData, compRegex, dirRegex } = useTransformState() + const importSet = new Set() const importMap = {}