diff --git a/docs/config/app-configs.md b/docs/config/app-configs.md index 51632242..b1cf0d8f 100644 --- a/docs/config/app-configs.md +++ b/docs/config/app-configs.md @@ -81,6 +81,56 @@ export default { } ``` +## markdown + +- Type: `MarkdownOption` + +Configre Markdown parser options. VitePress uses [Markdown-it](https://github.com/markdown-it/markdown-it) as the parser, and [Shiki](https://shiki.matsu.io/) to highlight language syntax. Inside this option, you may pass various Markdown related options to fit your needs. + +```js +export default { + markdown: { + theme: 'material-palenight', + lineNumbers: true + } +} +``` + +Below shows the the full option you may define within this object. + +```ts +interface MarkdownOptions extends MarkdownIt.Options { + // Syntax highlight theme for Shiki. + // See: https://github.com/shikijs/shiki/blob/main/docs/themes.md#all-themes + theme?: Shiki.Theme + + // Enable line numbers in code block. + lineNumbers?: boolean + + // markdown-it-anchor plugin options. + // See: https://github.com/valeriangalliat/markdown-it-anchor + anchor?: { + permalink?: anchor.AnchorOptions['permalink'] + } + + // markdown-it-attrs plugin options. + // See: https://github.com/arve0/markdown-it-attrs + attrs?: { + leftDelimiter?: string + rightDelimiter?: string + allowedAttributes?: string[] + } + + // markdown-it-table-of-contents cplugin options + // https://github.com/Oktavilla/markdown-it-table-of-contents + toc?: any + + // Configure the Markdown-it instance to fully customize + // how it works. + config?: (md: MarkdownIt) => void +} +``` + ## appearance - Type: `boolean` diff --git a/docs/guide/api.md b/docs/guide/api.md index ba427e5a..28eeb0c0 100644 --- a/docs/guide/api.md +++ b/docs/guide/api.md @@ -16,9 +16,9 @@ interface VitePressData { page: Ref theme: Ref // themeConfig from .vitepress/config.js frontmatter: Ref + lang: Ref title: Ref description: Ref - lang: Ref localePath: Ref } ``` @@ -85,7 +85,7 @@ Because VitePress applications are server-rendered in Node.js when generating st If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the `ClientOnly` component. -```html +```vue-html diff --git a/docs/guide/markdown-extensions.md b/docs/guide/markdown-extensions.md index dbeefe11..0e10ba20 100644 --- a/docs/guide/markdown-extensions.md +++ b/docs/guide/markdown-extensions.md @@ -198,7 +198,7 @@ console.log('Hello, VitePress!') ## Syntax Highlighting in Code Blocks -VitePress uses [Prism](https://prismjs.com) to highlight language syntax in Markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block: +VitePress uses [Shiki](https://shiki.matsu.io/) to highlight language syntax in Markdown code blocks, using coloured text. Shiki supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block: **Input** @@ -211,6 +211,16 @@ export default { ``` ```` +```` +```html +
    +
  • + {{ todo.text }} +
  • +
+``` +```` + **Output** ```js @@ -220,9 +230,6 @@ export default { } ``` -**Input** - -```` ```html
  • @@ -230,17 +237,10 @@ export default {
``` -```` - -**Output** -```html -
    -
  • {{ todo.text }}
  • -
-``` +A [list of valid languages](https://github.com/shikijs/shiki/blob/main/docs/languages.md) is available on Shiki’s repository. -A [list of valid languages](https://prismjs.com/#languages-list) is available on Prism’s site. +You may also customize syntax highlight theme in app config. Please see [`markdown` options](../config/app-configs#markdown) for more details. ## Line Highlighting in Code Blocks @@ -287,7 +287,7 @@ export default { // Highlighted This line isn't highlighted, but this and the next 2 are.`, motd: 'VitePress is awesome', - lorem: 'ipsum', + lorem: 'ipsum' } } } @@ -315,13 +315,15 @@ export default { // Highlighted You can enable line numbers for each code blocks via config: ```js -module.exports = { +export default { markdown: { lineNumbers: true } } ``` +Please see [`markdown` options](../config/app-configs#markdown) for more details. + ## Import Code Snippets You can import code snippets from existing files via following syntax: diff --git a/package.json b/package.json index c462bf97..46b3c3e1 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@vitejs/plugin-vue": "^2.3.2", "@vueuse/core": "^8.5.0", "body-scroll-lock": "^4.0.0-beta.0", - "prismjs": "^1.25.0", + "shiki": "^0.10.1", "vite": "^2.9.7", "vue": "3.2.33" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d8745d2..4e0d83e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,13 +56,13 @@ importers: picocolors: ^1.0.0 polka: ^0.5.2 prettier: ^2.3.0 - prismjs: ^1.25.0 prompts: ^2.4.2 rimraf: ^3.0.2 rollup: ^2.56.3 rollup-plugin-dts: ^4.2.2 rollup-plugin-esbuild: ^4.8.2 semver: ^7.3.5 + shiki: ^0.10.1 sirv: ^1.0.12 supports-color: ^9.2.2 typescript: ^4.7.2 @@ -76,7 +76,7 @@ importers: '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.33 '@vueuse/core': 8.5.0_vue@3.2.33 body-scroll-lock: 4.0.0-beta.0 - prismjs: 1.25.0 + shiki: 0.10.1 vite: 2.9.9 vue: 3.2.33 devDependencies: @@ -2452,7 +2452,6 @@ packages: /jsonc-parser/3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} - dev: true /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -3108,10 +3107,6 @@ packages: hasBin: true dev: true - /prismjs/1.25.0: - resolution: {integrity: sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==} - dev: false - /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true @@ -3385,6 +3380,14 @@ packages: resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} dev: true + /shiki/0.10.1: + resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} + dependencies: + jsonc-parser: 3.0.0 + vscode-oniguruma: 1.6.2 + vscode-textmate: 5.2.0 + dev: false + /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -3823,6 +3826,14 @@ packages: - stylus dev: true + /vscode-oniguruma/1.6.2: + resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} + dev: false + + /vscode-textmate/5.2.0: + resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + dev: false + /vue-demi/0.12.5_vue@3.2.33: resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} engines: {node: '>=12'} diff --git a/src/client/theme-default/components/VPCarbonAds.vue b/src/client/theme-default/components/VPCarbonAds.vue index 9199995b..7bc95f1f 100644 --- a/src/client/theme-default/components/VPCarbonAds.vue +++ b/src/client/theme-default/components/VPCarbonAds.vue @@ -43,7 +43,7 @@ if (carbonOptions) {