11import { reactive } from 'vue'
2+ import { formatStringByFileName } from '@opentiny/tiny-engine-common/js/ast'
23import { constants } from '@opentiny/tiny-engine-utils'
34import { getImportMap as getInitImportMap } from './importMap'
45import { getMetaApi , getMergeMeta , META_SERVICE , useEnv } from '@opentiny/tiny-engine-meta-register'
@@ -342,6 +343,21 @@ interface IUsePreviewData {
342343 setImportMap : ( importMap : Record < string , string > ) => void
343344}
344345
346+ const formatGeneratedFile = ( fileContent : unknown , fileName : string ) : string => {
347+ if ( typeof fileContent !== 'string' ) {
348+ return String ( fileContent ?? '' )
349+ }
350+
351+ return formatStringByFileName ( fileContent , fileName )
352+ }
353+
354+ const formatGeneratedFiles = ( files : Record < string , string > ) =>
355+ Object . entries ( files ) . reduce ( ( acc , [ fileName , fileContent ] ) => {
356+ acc [ fileName ] = formatGeneratedFile ( fileContent , fileName )
357+
358+ return acc
359+ } , { } as Record < string , string > )
360+
345361export const usePreviewData = ( { setFiles, store, setImportMap } : IUsePreviewData ) => {
346362 const basicFiles = setFiles ( srcFiles , 'src/Main.vue' )
347363
@@ -407,10 +423,10 @@ export const usePreviewData = ({ setFiles, store, setImportMap }: IUsePreviewDat
407423 const enableTailwindCSS = getMergeMeta ( 'engine.config' ) ?. enableTailwindCSS
408424 const appJsCode = processAppJsCode ( newFiles [ 'app.js' ] || '' , params . styles , enableTailwindCSS )
409425
410- newFiles [ 'app.js' ] = appJsCode
426+ newFiles [ 'app.js' ] = formatGeneratedFile ( appJsCode , 'app.js' )
411427 pageCode . forEach ( ( item ) => assignFiles ( item , newFiles ) )
412428
413- const metaFiles = generateMetaFiles ( metaData )
429+ const metaFiles = formatGeneratedFiles ( generateMetaFiles ( metaData ) )
414430 Object . assign ( newFiles , metaFiles )
415431 setFiles ( newFiles , 'App.vue' )
416432 } else if ( previewType === 'app' ) {
@@ -581,7 +597,7 @@ export const usePreviewData = ({ setFiles, store, setImportMap }: IUsePreviewDat
581597 return `${ importSnippet } \n ${ routeSnippets } \n ${ exportSnippet } `
582598 }
583599
584- const formatCode = ( fileContent , fileName ) => {
600+ const formatPreviewFile = ( fileContent , fileName ) => {
585601 if ( fileName === 'src/router/index.js' ) {
586602 fileContent = getRouterFile ( appSchema )
587603 } else {
@@ -601,23 +617,25 @@ export const usePreviewData = ({ setFiles, store, setImportMap }: IUsePreviewDat
601617 `const route = useRoute()\nconst router = useRouter()\nconst currentRoute = ref()\n\nwatchEffect(() => {\n\tcurrentRoute.value = route.path\n})\n\nconst routeChange = () => {\n\trouter.push(currentRoute.value)\n}\nprovide(I18nInjectionKey, i18n)`
602618 )
603619 }
604- return fileContent
620+
621+ return formatGeneratedFile ( fileContent , fileName )
605622 }
606623
607624 const fileRes = await getPreGenerateInfo ( )
608625 const newFileRes = fileRes . filter ( ( item ) => item . filePath . includes ( 'src/' ) )
609626 const srcFiles = newFileRes . reduce ( ( prev , item ) => {
610627 const fileName = item . filePath
611- prev [ fileName ] = formatCode ( item . fileContent , fileName )
628+ prev [ fileName ] = formatPreviewFile ( item . fileContent , fileName )
612629 return prev
613- } , { } )
614- srcFiles [ 'import-map.json' ] = JSON . stringify ( importMapData )
630+ } , { } as Record < string , string > )
631+ srcFiles [ 'import-map.json' ] = formatGeneratedFile ( JSON . stringify ( importMapData ) , 'import-map.json' )
615632 const newFiles = store . getFiles ( )
616633 const enableTailwindCSS = getMergeMeta ( 'engine.config' ) ?. enableTailwindCSS
617634 const appJsCode = processAppJsCode ( newFiles [ 'app.js' ] || '' , params . styles , enableTailwindCSS )
618- srcFiles [ 'app.js' ] = appJsCode
635+ srcFiles [ 'app.js' ] = formatGeneratedFile ( appJsCode , 'app.js' )
619636 srcFiles [ 'main.js' ] = `import app from './app.js' \n ${ srcFiles [ 'src/main.js' ] } `
620637 srcFiles [ 'main.js' ] = srcFiles [ 'main.js' ] . replace ( "import 'element-plus/dist/index.css'" , '' )
638+ srcFiles [ 'main.js' ] = formatGeneratedFile ( srcFiles [ 'main.js' ] , 'main.js' )
621639 setFiles ( srcFiles , 'src/main.js' )
622640 }
623641 }
0 commit comments