diff --git a/src/codegen/generateRouteRecords.ts b/src/codegen/generateRouteRecords.ts index 2b064d3a1..a46180ee9 100644 --- a/src/codegen/generateRouteRecords.ts +++ b/src/codegen/generateRouteRecords.ts @@ -26,6 +26,25 @@ ${node ]` } + const definePageDataList: string[] = [] + + if (node.hasDefinePage) { + for (const [name, filePath] of node.value.components) { + const pageDataImport = `_definePage_${name}_${importsMap.size}` + definePageDataList.push(pageDataImport) + importsMap.addDefault( + // TODO: apply the language used in the sfc + `${filePath}?definePage&vue&lang.tsx`, + pageDataImport + ) + } + + // extra indent to add `_mergeRouteRecord()` + if (definePageDataList.length > 0) { + indent++ + } + } + const startIndent = ' '.repeat(indent * 2) const indentStr = ' '.repeat((indent + 1) * 2) @@ -75,25 +94,14 @@ ${indentStr}],` }${formatMeta(node, indentStr)} ${startIndent}}` - if (node.hasDefinePage) { - const definePageDataList: string[] = [] - for (const [name, filePath] of node.value.components) { - const pageDataImport = `_definePage_${name}_${importsMap.size}` - definePageDataList.push(pageDataImport) - importsMap.addDefault( - // TODO: apply the language used in the sfc - `${filePath}?definePage&vue&lang.tsx`, - pageDataImport - ) - } - - if (definePageDataList.length) { - importsMap.add('unplugin-vue-router/runtime', '_mergeRouteRecord') - return ` _mergeRouteRecord( + if (definePageDataList.length > 0) { + // remove one tab + const mergeCallIndent = startIndent.slice(2) + importsMap.add('unplugin-vue-router/runtime', '_mergeRouteRecord') + return `${mergeCallIndent}_mergeRouteRecord( ${routeRecord}, - ${definePageDataList.join(',\n')} - )` - } +${definePageDataList.map((s) => startIndent + s).join(',\n')} +${mergeCallIndent})` } return routeRecord