\r\n \u003Ckey id=\"that\" to=\"ថា\" />\r\n \u003C/keys>\r\n\r\n \u003Clayers form=\"hardware\">\r\n \u003Clayer id=\"base\">\r\n \u003Crow keys=\"hmaqtugha that\" />\r\n \u003C/layer>\r\n \u003C/layers>\r\n\r\n\u003C/keyboard>\r\n```\r\n\r\nSymptom is an error deep inside vue\r\n\r\n```\r\n5:26:34 PM [vitepress] Internal server error: Duplicate attribute.\r\n Plugin: vite:vue\r\n File: /Users/srl295/src/codehivetx.us/en/posts/2022-kbd-progress.md:22:69\r\n 22 | \u003Ckeys>\r\n 23 | \u003Ckey id=\"hmaqtugha\" to=\"ħ\" />\r\n 24 | \u003Ckey id=\"that\" to=\"ថា\" />\r\n | ^\r\n 25 | \u003C/keys>\r\n 26 | \r\n at createCompilerError (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:1327:17)\r\n at emitError (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:2805:5)\r\n at Object.onattribnameend (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:2290:7)\r\n at Tokenizer.handleAttrNameEnd (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:872:14)\r\n at Tokenizer.stateInAttrName (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:812:12)\r\n at Tokenizer.parse (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:1065:16)\r\n at Object.baseParse (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js:2844:13)\r\n at Object.parse (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js:698:23)\r\n at Object.parse$2 [as parse] (/Users/srl295/src/codehivetx.us/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:1846:24)\r\n at createDescriptor (file:///Users/srl295/src/codehivetx.us/node_modules/@vitejs/plugin-vue/dist/index.mjs:74:43) (x2)\r\n```\r\n",[2916,2919],{"name":2917,"color":2918},"build","377ba8",{"name":2871,"color":2872},3401,"better stack trace / error message for markdown-it-attrs failures","2025-03-02T18:10:00Z","https://github.com/vuejs/vitepress/issues/3401",0.7900253,{"description":2926,"labels":2927,"number":2928,"owner":2874,"repository":2875,"state":2929,"title":2930,"updated_at":2931,"url":2932,"score":2933},"### Describe the bug\n\nI've implemented a vitepress site for a component library used internally. Running npm run docs:dev works as intended and the documentation site is functional. When I attempt to build the docs site, I get an ambiguous error.\r\n\r\nProject link: https://github.com/MelihAltintas/vue3-openlayers\r\n\r\n```\r\n> vue3-openlayers@0.1.74 docs:build\r\n> vitepress build docs\r\n\r\n\r\n vitepress v1.0.0-alpha.50\r\n\r\n⠦ building client + server bundles...\r\n(!) Some chunks are larger than 500 kBs after minification. Consider:\r\n- Using dynamic import() to code-split the application\r\n- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks\r\n- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.\r\n✓ building client + server bundles...\r\nbuild error:\r\nError [ERR_MODULE_NOT_FOUND]: Cannot find package 's' imported from D:\\vue3-openlayers\\docs\\.vitepress\\.temp\\app.js\r\n at new NodeError (node:internal/errors:371:5)\r\n at packageResolve (node:internal/modules/esm/resolve:884:9)\r\n at moduleResolve (node:internal/modules/esm/resolve:929:18)\r\n at defaultResolve (node:internal/modules/esm/resolve:1044:11)\r\n at ESMLoader.resolve (node:internal/modules/esm/loader:422:30)\r\n at ESMLoader.getModuleJob (node:internal/modules/esm/loader:222:40)\r\n at ModuleWrap.\u003Canonymous> (node:internal/modules/esm/module_job:76:40)\r\n at link (node:internal/modules/esm/module_job:75:36)\r\n```\n\n### Reproduction\n\nnpm run docs:build\n\n### Expected behavior\n\nwork like a npm run docs:dev\n\n### System Info\n\n```shell\nSystem:\r\n OS: Windows 10 10.0.19044\r\n CPU: (8) x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz\r\n Memory: 11.31 GB / 31.88 GB\r\n Binaries:\r\n Node: 16.13.1 - C:\\Program Files\\nodejs\\node.EXE\r\n Yarn: 1.22.17 - ~\\AppData\\Roaming\\npm\\yarn.CMD\r\n npm: 8.3.2 - C:\\Program Files\\nodejs\\npm.CMD\r\n Browsers:\r\n Chrome: 111.0.5563.111\r\n Edge: Spartan (44.19041.1266.0), Chromium (111.0.1661.51)\r\n Internet Explorer: 11.0.19041.1566\r\n npmPackages:\r\n vitepress: ^1.0.0-alpha.50 => 1.0.0-alpha.50\n```\n\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] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[],2137,"closed","dev works perfect but build not work","2023-04-02T00:04:13Z","https://github.com/vuejs/vitepress/issues/2137",0.74241596,{"description":2935,"labels":2936,"number":2937,"owner":2874,"repository":2875,"state":2929,"title":2938,"updated_at":2939,"url":2940,"score":2941},"### Is your feature request related to a problem? Please describe.\n\nI wrote a Markdown-it plugin, but when I register the plugin in defineConfig, it shows that the MarkdownIt type exported from markdown-it is incompatible with the internal types of VitePress.\r\n\r\nTherefore, should VitePress export a Markdown type internally to facilitate fixing type errors?\r\n\r\n\r\n\r\nmy `langPlugin.ts`\r\n\r\n```ts\r\nimport { getLogoTagString } from '../content'\r\nimport MarkdownIt from 'markdown-it';\r\n\r\nfunction langPlugin(md: MarkdownIt) {\r\n const temp = md.renderer!.rules!.fence!.bind(md.renderer.rules)\r\n md.renderer.rules.fence = (tokens, idx, options, env, slf) => {\r\n const token = tokens[idx]\r\n if (getLogoTagString(token.info)) {\r\n const result = token.info.match(/^\\b([\\w\\.]*)\\b/)\r\n if (!result)\r\n return temp(tokens, idx, options, env, slf)\r\n const [_, lang] = result\r\n const content = temp(tokens, idx, options, env, slf)\r\n const value = getLogoTagString(lang)\r\n return content.replace(`\u003Cspan class=\"lang\">${lang}\u003C/span>`, `\u003Cspan class=\"lang icon\">${value}\u003C/span>`)\r\n }\r\n\r\n return temp(tokens, idx, options, env, slf)\r\n }\r\n\r\n // insert icon before\r\n // https://github.com/vuejs/vitepress/blob/0c434bf537a64b06fc0bc630b4ee58b9fa67309b/src/node/markdown/plugins/containers.ts#L95\r\n const rawCodeGroupRender = md.renderer.rules['container_code-group_open']!\r\n \r\n md.renderer.rules['container_code-group_open'] = (tokens, idx, options, env, slf) => {\r\n const content: string = rawCodeGroupRender(tokens, idx, options, env, slf)\r\n // match: >index.ts\u003C/label>\r\n return content.replace(/>(\\s*[^\\\u003C\\>]*\\s*)\\\u003C\\/label\\>/g, (_, $1) => {\r\n return `>${getLogoTagString($1)} ${$1}\u003C/label>`\r\n })\r\n }\r\n}\r\n\r\nexport default langPlugin\r\n\r\n```\n\n### Describe the solution you'd like\n\n```diff\r\n- import MarkdownIt from 'markdown-it';\r\n+ import type { MarkdownIt } from 'vitepress'\r\nimport { getLogoTagString } from '../content'\r\n\r\nfunction langPlugin(md: MarkdownIt) {\r\n const temp = md.renderer!.rules!.fence!.bind(md.renderer.rules)\r\n md.renderer.rules.fence = (tokens, idx, options, env, slf) => {\r\n const token = tokens[idx]\r\n if (getLogoTagString(token.info)) {\r\n const result = token.info.match(/^\\b([\\w\\.]*)\\b/)\r\n if (!result)\r\n return temp(tokens, idx, options, env, slf)\r\n const [_, lang] = result\r\n const content = temp(tokens, idx, options, env, slf)\r\n const value = getLogoTagString(lang)\r\n return content.replace(`\u003Cspan class=\"lang\">${lang}\u003C/span>`, `\u003Cspan class=\"lang icon\">${value}\u003C/span>`)\r\n }\r\n\r\n return temp(tokens, idx, options, env, slf)\r\n }\r\n\r\n // insert icon before\r\n // https://github.com/vuejs/vitepress/blob/0c434bf537a64b06fc0bc630b4ee58b9fa67309b/src/node/markdown/plugins/containers.ts#L95\r\n const rawCodeGroupRender = md.renderer.rules['container_code-group_open']!\r\n \r\n md.renderer.rules['container_code-group_open'] = (tokens, idx, options, env, slf) => {\r\n const content: string = rawCodeGroupRender(tokens, idx, options, env, slf)\r\n // match: >index.ts\u003C/label>\r\n return content.replace(/>(\\s*[^\\\u003C\\>]*\\s*)\\\u003C\\/label\\>/g, (_, $1) => {\r\n return `>${getLogoTagString($1)} ${$1}\u003C/label>`\r\n })\r\n }\r\n}\r\n\r\nexport default langPlugin\r\n\r\n```\n\n### Describe alternatives you've considered\n\nNot yet.\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.",[],4146,"Support exporting in `MarkdownIt` interface to be compatible with Markdown plugins users have written themselves","2024-08-25T04:42:06Z","https://github.com/vuejs/vitepress/issues/4146",0.7576768,{"description":2943,"labels":2944,"number":2948,"owner":2874,"repository":2875,"state":2929,"title":2949,"updated_at":2950,"url":2951,"score":2952},"### Is your feature request related to a problem? Please describe.\n\nThe home page looks quite good on a larger display. Once you switch to a documentation page, the conent feels a bit squeezed together. This is mostly due to paddings from the left and right sidebar and the content. Each \"padding\" considered alone is not very large. However, when added together, I think a lot of space is wasted here.\r\n\r\n\n\n### Describe the solution you'd like\n\nAdd a \"full width\" mode for desktop view, configureable via the theme settings (true/false). This should reduce the paddings and maximize the content width.\r\n\r\nNow :\r\n\u003Cimg width=\"1624\" alt=\"Screenshot1\" src=\"https://github.com/vuejs/vitepress/assets/30625794/941774fd-b73f-4b03-8095-f1eda053f247\">\r\n\r\n\r\nExpected :\r\n\u003Cimg width=\"1624\" alt=\"Screenshot2\" src=\"https://github.com/vuejs/vitepress/assets/30625794/62a77e31-80a6-4f54-b894-28f58d3460af\">\r\n\r\nI think this will result in some better readability when you have a documentation with some screenshots or larger code parts.\r\n\n\n### Describe alternatives you've considered\n\nMaybe you can try to write some hacky CSS overrides, but this is not a good solution.\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.",[2945],{"name":2946,"color":2947},"theme","0754FB",3160,"Full width layout for larger screens like desktop","2023-11-08T00:04:17Z","https://github.com/vuejs/vitepress/issues/3160",0.7681796,{"description":2954,"labels":2955,"number":2959,"owner":2874,"repository":2875,"state":2929,"title":2960,"updated_at":2961,"url":2962,"score":2963},"### Describe the bug\n\nWhen two Link components are nested within each other, it reports \"Hydration completed but contains mismatches.\"\nThis error only occurs in the production environment.\n\nLink.vue:\n\n```vue\n\u003Ctemplate>\n \u003Ca>\n \u003Cslot />\n \u003C/a>\n\u003C/template>\n```\n\nindex.md\n\n```vue\n\u003CLink>\u003CLink>Hydration completed but contains mismatches.\u003C/Link>\u003C/Link>\n```\n\n### Reproduction\n\nhttps://stackblitz.com/edit/vite-4nxfvzn6?file=docs%2Findex.md\n\n### Expected behavior\n\nI'm not sure why this happens, but it's quite hard to troubleshoot. It would be better if more explicit error messages could be provided.\n\n### System Info\n\n```Text\nLatest Chrome\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.",[2956],{"name":2957,"color":2958},"bug: pending triage","e99695",4495,"When two Link components are nested within each other, it reports \"Hydration completed but contains mismatches.\"","2025-01-25T04:42:41Z","https://github.com/vuejs/vitepress/issues/4495",0.77638286,{"description":2965,"labels":2966,"number":2968,"owner":2874,"repository":2875,"state":2929,"title":2969,"updated_at":2970,"url":2971,"score":2972},"### Is your feature request related to a problem? Please describe.\n\nNo\n\n### Describe the solution you'd like\n\nAdd Crowdin or Weblate support\n\n### Describe alternatives you've considered\n\nDocusaurus里官方有Crowdin的案例\r\nVitepress在做国际化的时候是否会加入Crowdin或者Weblate的案例?\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.vuejs.org).\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.",[2967],{"name":2871,"color":2872},1243,"Crowdin or Weblate support?","2023-08-11T00:04:20Z","https://github.com/vuejs/vitepress/issues/1243",0.7787309,["Reactive",2974],{},["Set"],["ShallowReactive",2977],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fsMuhR_NjKXJ_76viCyZr435aG2YCh5cdqrcWV2KXVuQ":-1},"/vuejs/vitepress/2206"]