\r\n\u003C/div>\r\n`\r\n\r\n// when creating a demo section, `@/` will be replaced with `srcDir`\r\nexport const demoPlugin = (md: MarkdownIt, srcDir: string) => {\r\n const parser: RuleBlock = (state, startLine, _endLine, _silent) => {\r\n /*... some code to extract the file name from the markdown ... */\r\n token.attrSet('src', resolve(filename))\r\n return true\r\n }\r\n\r\n const renderer: RenderRule = (...args) => {\r\n /* ... some code to get `src` and check that the file exists ... */\r\n \r\n const file = readFileSync(src, 'utf8')\r\n\r\n // script\r\n token.info = `ts`\r\n token.content = findSection(file, SCRIPT_START, SCRIPT_END)\r\n const script = md.renderer.rules.fence!(...args)\r\n\r\n // template\r\n token.info = `vue-html`\r\n token.content = findSection(file, TEMPLATE_START, TEMPLATE_END)\r\n const template = md.renderer.rules.fence!(...args)\r\n\r\n // component\r\n const demo = md.render(COMPONENT_SNIPPET(src))\r\n\r\n return script + template + demo\r\n }\r\n\r\n md.renderer.rules.demo = renderer\r\n md.block.ruler.before(md.block.ruler.getRules('')[0].name, 'demo', parser)\r\n}\r\n\r\n// returns everything between the first match of `start` and the subsequent first match for `end`\r\nfunction findSection(content: string, start: RegExp, end: RegExp): string {\r\n //...\r\n}\r\n``` \r\n\r\nSo the markdown rendered used to take the line `const demo = md.render(COMPONENT_SNIPPET(src))` and automagically put the `import` statement where it needs to be and happily render the component. However, since updating to `1.0.0-alpha.11` this no longer works. In fact if I manually write out the import statement in the markdown file, everything works - so something is wrong with the way my plugin is handling the import.\r\n\r\nI looked into the way [plugin-sfc](https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-sfc) works and it looks like there was a change from `0.10.0` to `0.11.0` in the way script SFC blocks are handled.\r\n\r\nI tried to copy the way the changed code works in my plugin, but I have not managed to get it working:\r\n\r\n```ts\r\n const block = `\u003Cscript setup lang=\"ts\"> import DemoComponent from \"${src}\"; \u003C/script>`\r\n sfcBlocks.scriptSetup = block\r\n sfcBlocks.scripts.push(block)\r\n\r\n token.content = `\u003Cdiv class=\"vp-raw\"> \u003Cdemo-component/> \u003C/div>`\r\n const demo = md.renderer.rules.html_block!(...args)\r\n```\r\n\r\nDoes anyone know how this can be done? How can my plugin tell VitePress that it needs to import the demo component for this page?\r\n",[],1349,"closed","Import custom component in MarkdownIt plugin","2023-01-21T14:22:46Z","https://github.com/vuejs/vitepress/issues/1349",0.6618959,{"description":2918,"labels":2919,"number":2921,"owner":2857,"repository":2858,"state":2912,"title":2922,"updated_at":2923,"url":2924,"score":2925},"### Describe the bug\n\nbuild error:\r\nThe requested module 'vue' does not provide an export named 'default'\r\nfile:///Users/lee/Codes/Work/PanSoft/pan-ui-vue/apps/docs/.vitepress/.temp/index.gDrBdFYw.js:1\r\nimport require$$0, { defineComponent, createVNode, ref, computed, watch, Fragment, watchEffect, createTextVNode, toRaw, mergeModels, useModel, openBlock, createBlock, unref, mergeProps, createSlots, withCtx, normalizeClass, createElementBlock, createElementVNode, toDisplayString, renderList, renderSlot, normalizeProps, nextTick } from \"vue\";\r\n\r\nSyntaxError: The requested module 'vue' does not provide an export named 'default'\r\n at ModuleJob._instantiate (node:internal/modules/esm/module_job:132:21)\r\n at async ModuleJob.run (node:internal/modules/esm/module_job:214:5)\r\n at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)\r\n at async build (file:///Users/lee/Codes/Work/PanSoft/pan-ui-vue/node_modules/.pnpm/vitepress@1.3.3_@algolia+client-search@4.24.0_@types+node@22.0.0_async-validator@4.2.5_less@4_vyupewqor5ionkpvva6zm6cw7u/node_modules/vitepress/dist/node/serve-lJPQ9bCN.js:47053:24)\n\n### Reproduction\n\n{\r\n \"name\": \"docs\",\r\n \"private\": true,\r\n \"scripts\": {\r\n \"dev\": \"vitepress dev\",\r\n \"docs:build\": \"vitepress build\",\r\n \"docs:preview\": \"vitepress preview\"\r\n },\r\n \"dependencies\": {\r\n \"@panui-vue/base\": \"workspace:*\",\r\n \"@panui-vue/pro\": \"workspace:*\",\r\n \"@panui-vue/icon\": \"workspace:*\",\r\n \"@panui-vue/excel\": \"workspace:*\",\r\n \"vue\": \"^3.4.31\",\r\n \"lodash-es\": \"^4.17.21\",\r\n \"@formily/vue\": \"^2.3.2\",\r\n \"dayjs\": \"1.11.12\"\r\n },\r\n \"devDependencies\": {\r\n \"@faker-js/faker\": \"^8.4.1\",\r\n \"@vitepress-demo-preview/component\": \"^2.3.2\",\r\n \"@vitepress-demo-preview/plugin\": \"^1.2.3\",\r\n \"postcss\": \"^8.4.40\",\r\n \"rollup-plugin-visualizer\": \"^5.12.0\",\r\n \"typescript\": \"^5.2.2\",\r\n \"vitepress\": \"^1.3.3\",\r\n \"@types/lodash-es\": \"^4.17.12\",\r\n \"@vitejs/plugin-vue-jsx\": \"^4.0.0\"\r\n }\r\n}\n\n### Expected behavior\n\nNormal build\n\n### System Info\n\n```Text\nSystem:\r\n OS: macOS 14.6.1\r\n CPU: (10) arm64 Apple M1 Pro\r\n Memory: 185.47 MB / 16.00 GB\r\n Shell: 5.9 - /bin/zsh\r\n Binaries:\r\n Node: 20.11.1 - ~/.nvm/versions/node/v20.11.1/bin/node\r\n npm: 10.2.4 - ~/.nvm/versions/node/v20.11.1/bin/npm\r\n pnpm: 9.7.1 - ~/.nvm/versions/node/v20.11.1/bin/pnpm\r\n Browsers:\r\n Chrome: 127.0.6533.120\r\n Edge: 127.0.2651.105\r\n Safari: 17.6\n```\n\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[2920],{"name":2900,"color":2901},4158,"SyntaxError: The requested module 'vue' does not provide an export named 'default'","2024-09-03T04:42:37Z","https://github.com/vuejs/vitepress/issues/4158",0.6766468,{"description":2927,"labels":2928,"number":2929,"owner":2857,"repository":2858,"state":2912,"title":2930,"updated_at":2931,"url":2932,"score":2933},"https://github.com/vuejs/vitepress/blob/e6f9dd33c73411ded5461670f68ed4fe8c5923fa/src/node/plugin.ts#L405-L408\r\n\r\nthis doesn't consider rewrites",[],4172,"watchers not being triggered on data updates in pages with rewrites","2024-09-09T04:43:00Z","https://github.com/vuejs/vitepress/issues/4172",0.6821433,{"description":2935,"labels":2936,"number":2937,"owner":2857,"repository":2858,"state":2912,"title":2938,"updated_at":2939,"url":2940,"score":2941},"### Is your feature request related to a problem? Please describe.\n\nI have such a dynamic parameter page because its data needs to be rendered using Vue components. I cannot directly load and pass the content parameter in `[lang]-[version].paths.ts` and use `\u003C!-- @content -->` to render the page directly. Instead, I must load and pass all the data in `hocon.data.ts` and import it into the Vue component of the page. I found that this way will load all the data, even though I only need the data of the current page.\r\n\r\n\u003Cimg width=\"623\" alt=\"image\" src=\"https://github.com/vuejs/vitepress/assets/38158783/dc2eb916-ffad-4010-ab72-84f7685a867a\">\r\n\r\nhocon.data.ts\r\n```ts\r\ninterface HoconPageData {\r\n hocon: {\r\n [version: string]: {\r\n [language: string]: Struct[]\r\n }\r\n }\r\n}\r\n\r\nexport default defineLoader({\r\n watch: ['../public/api/hocon-*.json'],\r\n load(_watchedFiles) {\r\n const hoconPageData = {} as HoconPageData\r\n\r\n const hoconFiles = readHoconFiles()\r\n\r\n if (!hoconFiles.length)\r\n return hoconPageData\r\n\r\n hoconPageData.hocon = hoconFiles.reduce((acc: any, hoconFile) => {\r\n if (!acc[hoconFile.version])\r\n acc[hoconFile.version] = {}\r\n\r\n acc[hoconFile.version][hoconFile.lang] = JSON.parse(hoconFile.fileContent) as Struct[]\r\n return acc\r\n }, {})\r\n\r\n return hoconPageData\r\n },\r\n})\r\n```\r\n\r\nHoconView.vue\r\n```vue\r\n\u003Cscript setup lang=\"ts\">\r\nimport { computed, ref } from 'vue'\r\nimport { useData } from 'vitepress'\r\nimport type { Struct } from '../../utils/schema'\r\nimport { data } from '../../../hocon/hocon.data'\r\nimport HoconStruct from './HoconStruct.vue'\r\n\r\nconst { lang, params } = useData()\r\n\r\nconst version = computed(() => params.value?.version)\r\n\r\nconst rootStruct = ref(data.hocon[version.value][lang.value] as Struct)\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n \u003CHoconStruct :struct=\"rootStruct\" />\r\n\u003C/template>\r\n\r\n\u003Cstyle lang=\"scss\">\r\n\r\n\u003C/style>\r\n```\r\n\n\n### Describe the solution you'd like\n\nCurrently, only when rendering Markdown or HTML directly can the `content` parameter be passed to load page content as needed. I hope that when using local files as build data and needing Vue components to render pages, data can also be loaded according to page parameters as needed.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],3269,"Can local file data be loaded on demand based on the page?","2023-12-14T00:04:41Z","https://github.com/vuejs/vitepress/issues/3269",0.68521464,{"description":2943,"labels":2944,"number":2948,"owner":2857,"repository":2858,"state":2912,"title":2949,"updated_at":2950,"url":2951,"score":2952},"### Is your feature request related to a problem? Please describe.\r\n\r\nConveniently use content-adaptive layout in components on the home page\r\n\r\n### Describe the solution you'd like\r\n\r\n`.vitepress/theme/index.ts`:\r\n```ts\r\nimport HomePage from './component/HomePage'\r\n\r\nexport default {\r\n Layout: () => {\r\n return h(Theme.Layout, null, {\r\n 'home-features-after': () => h(HomePage),\r\n })\r\n },\r\n```\r\n\r\n---\r\n\r\n`HomePage.vue`:\r\n\r\n```html\r\n\u003Cscript setup lang=\"ts\">\r\nimport{ VPHomeContent } from 'vitepress/theme'\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n\t\u003CVPHomeContent>\r\n\t\t\u003C!-- my custom content -->\r\n\t\u003C/VPHomeContent>\r\n\u003C/template>\r\n```\r\n\r\n### Describe alternatives you've considered\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\r\n- [X] Read the [docs](https://vitepress.dev).\r\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\r\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[2945],{"name":2946,"color":2947},"contribution welcome","11E4B8",3954,"[New feature] export `VPHomeContent` to provide content-adaptive layout","2024-06-22T04:41:46Z","https://github.com/vuejs/vitepress/issues/3954",0.6906662,["Reactive",2954],{},["Set"],["ShallowReactive",2957],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$frzhsNMBJZiMaamQrba29YysRHiDLS2AwAdNXz5nYj-Y":-1},"/vuejs/vitepress/2838"]