import { mergeOptions } from '../utils/mergeOptions'
import { genSFCWithDefaultPlugin } from '../generator'
const defaultOption = {
pageBasePath: './src/views'
}
function genPagePlugin(options = {}) {
const realOptions = mergeOptions(defaultOption, options)
const { pageBasePath, sfcConfig = {} } = realOptions
return {
name: 'tinyEngine-generateCode-plugin-page',
description: 'transform page schema to code',
* 将页面 schema 转换成高代码
* @param {import('@opentiny/tiny-engine-dsl-vue').IAppSchema} schema
* @returns
*/
run(schema) {
const pages = schema.pageSchema
const resPage = []
for (const page of pages) {
const res = genSFCWithDefaultPlugin(page, schema.componentsMap, sfcConfig)
resPage.push({
fileType: 'vue',
fileName: `${page.fileName}.vue`,
path: `${pageBasePath}/${page.path || ''}`,
fileContent: res
})
}
return resPage
}
}
}
export default genPagePlugin