diff --git a/.vscode/settings.json b/.vscode/settings.json
index 0914fe961..8d4a5479c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -46,6 +46,7 @@
"prefetch",
"preload",
"prismjs",
+ "revealjs",
"shiki",
"shikijs",
"slugify",
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
index ec603a079..3f7bff54b 100644
--- a/docs/.vuepress/config.ts
+++ b/docs/.vuepress/config.ts
@@ -10,6 +10,7 @@ import { feedPlugin } from '@vuepress/plugin-feed'
import { markdownExtPlugin } from '@vuepress/plugin-markdown-ext'
import { markdownImagePlugin } from '@vuepress/plugin-markdown-image'
import { markdownMathPlugin } from '@vuepress/plugin-markdown-math'
+import { markdownStylizePlugin } from '@vuepress/plugin-markdown-stylize'
import { redirectPlugin } from '@vuepress/plugin-redirect'
import { registerComponentsPlugin } from '@vuepress/plugin-register-components'
import { revealJsPlugin } from '@vuepress/plugin-revealjs'
@@ -100,6 +101,29 @@ export default defineUserConfig({
markdownMathPlugin({
type: 'katex',
}),
+ markdownStylizePlugin({
+ align: true,
+ attrs: true,
+ mark: true,
+ spoiler: true,
+ sub: true,
+ sup: true,
+ custom: [
+ {
+ matcher: 'Recommended',
+ replacer: ({ tag }) => {
+ if (tag === 'em')
+ return {
+ tag: 'Badge',
+ attrs: { type: 'tip' },
+ content: 'Recommended',
+ }
+
+ return null
+ },
+ },
+ ],
+ }),
redirectPlugin({
switchLocale: 'modal',
}),
diff --git a/docs/.vuepress/configs/sidebar/en.ts b/docs/.vuepress/configs/sidebar/en.ts
index 14cecbd12..15fbb80dc 100644
--- a/docs/.vuepress/configs/sidebar/en.ts
+++ b/docs/.vuepress/configs/sidebar/en.ts
@@ -103,6 +103,7 @@ export const sidebarEn: SidebarOptions = {
'markdown-image',
'markdown-hint',
'markdown-math',
+ 'markdown-stylize',
'markdown-tab',
'links-check',
'prismjs',
diff --git a/docs/.vuepress/configs/sidebar/zh.ts b/docs/.vuepress/configs/sidebar/zh.ts
index 41c807fc1..e2542f78c 100644
--- a/docs/.vuepress/configs/sidebar/zh.ts
+++ b/docs/.vuepress/configs/sidebar/zh.ts
@@ -103,6 +103,7 @@ export const sidebarZh: SidebarOptions = {
'markdown-image',
'markdown-hint',
'markdown-math',
+ 'markdown-stylize',
'markdown-tab',
'links-check',
'prismjs',
diff --git a/docs/package.json b/docs/package.json
index 5d3e203ad..880001e3f 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -21,6 +21,7 @@
"@vuepress/plugin-markdown-ext": "workspace:*",
"@vuepress/plugin-markdown-image": "workspace:*",
"@vuepress/plugin-markdown-math": "workspace:*",
+ "@vuepress/plugin-markdown-stylize": "workspace:*",
"@vuepress/plugin-markdown-tab": "workspace:*",
"@vuepress/plugin-medium-zoom": "workspace:*",
"@vuepress/plugin-nprogress": "workspace:*",
diff --git a/docs/plugins/markdown/markdown-stylize.md b/docs/plugins/markdown/markdown-stylize.md
new file mode 100644
index 000000000..447f4b399
--- /dev/null
+++ b/docs/plugins/markdown/markdown-stylize.md
@@ -0,0 +1,257 @@
+# markdown-stylize
+
+
+
+Stylizing content in your VuePress site.
+
+## Usage
+
+```bash
+npm i -D @vuepress/plugin-markdown-stylize@next
+```
+
+```ts
+import { markdownStylizePlugin } from '@vuepress/plugin-markdown-stylize'
+
+export default {
+ plugins: [
+ markdownStylizePlugin({
+ // options
+ }),
+ ],
+}
+```
+
+## Syntax
+
+### Align Content
+
+You can use `left` `center` `right` `justify` to align text.
+
+:::: details Demo
+
+::: left
+Contents to align left
+:::
+
+::: center
+Contents to align center
+:::
+
+::: right
+Contents to align right
+:::
+
+::: justify
+Contents to align justify
+:::
+
+```md
+::: left
+Contents to align left
+:::
+
+::: center
+Contents to align center
+:::
+
+::: right
+Contents to align right
+:::
+
+::: justify
+Contents to align justify
+:::
+```
+
+::::
+
+### Appending Attributes
+
+You can use `{attrs}` to add attrs to Markdown content.
+
+For example, if you want a heading2 "Hello World" with an id "say-hello-world", you can write:
+
+```md
+## Hello World {#say-hello-world}
+```
+
+If you want an image with class "full-width", you can write:
+
+```md
+![img](link/to/image.png) {.full-width}
+```
+
+Also, other attrs are supported, so:
+
+```md
+A paragraph with some text. {#p .a .b align=center customize-attr="content with spaces"}
+```
+
+will be rendered into:
+
+```html
+
+ A paragraph with some text.
+
+```
+
+For all demos, see [@mdit/plugin-attrs](https://mdit-plugins.github.io/attrs.html#demo).
+
+### Highlighting Content
+
+You can use `==` to mark text with ``.
+
+::: details Demo
+
+VuePress is ==powerful==!
+
+```md
+VuePress is ==powerful==!
+```
+
+:::
+
+### Creating Spoilers
+
+You can use `!! !!` to mark a content as spoiler.
+
+::: details Demo
+
+VuePress is !!powerful!!.
+
+```md
+VuePress is !!powerful!!.
+```
+
+:::
+
+### Superscript and Subscript
+
+You can use `^` for superscript and `~` for subscript.
+
+::: details Demo
+
+H~2~O is a liquid. 2^10^ is 1024.
+
+```md
+H~2~O is a liquid. 2^10^ is 1024.
+```
+
+:::
+
+### Create your own stylize rules
+
+The `custom` option receives an array, where each element accepts 2 options:
+
+- `matcher`: should be `string` or `RegExp`.
+
+- `replacer`: a function customizing the matched token
+
+For example, you can use the following config to transform `*Recommended*` into a Badge Recommended
+
+```js {6-18} title=".vuepress/config.js"
+import { markdownStylizePlugin } from '@vuepress/plugin-markdown-stylize'
+
+export default {
+ plugins: [
+ markdownStylizePlugin({
+ custom: [
+ {
+ matcher: 'Recommended',
+ replacer: ({ tag }) => {
+ if (tag === 'em')
+ return {
+ tag: 'Badge',
+ attrs: { type: 'tip' },
+ content: 'Recommended',
+ }
+
+ return null
+ },
+ },
+ ],
+ }),
+ ],
+}
+```
+
+Another example is you want to set all the emphasis `n't` words to red color, so that `Setting this to an invalid syntax *doesn't* have any effect.` becomes: "Setting this to an invalid syntax doesn't have any effect."
+
+```js {6-18} title=".vuepress/config.js"
+import { markdownStylizePlugin } from '@vuepress/plugin-markdown-stylize'
+
+export default {
+ plugins: [
+ markdownStylizePlugin({
+ custom: [
+ {
+ matcher: /n't$/,
+ replacer: ({ tag, attrs, content }) => {
+ if (tag === 'em')
+ return {
+ tag: 'span',
+ attrs: { ...attrs, style: 'color: red' },
+ content,
+ }
+
+ return null
+ },
+ },
+ ],
+ }),
+ ],
+}
+```
+
+Also, you can use `stylize` in frontmatter to provide extra stylize rules for content of the page.
+
+## Options
+
+### align
+
+- Type: `boolean`
+
+- Details: Whether to enable align support
+
+### attrs
+
+- Type: `MarkdownItAttrsOptions | boolean`
+
+- Details:
+
+ Whether to enable attrs support.
+
+ You can also pass an object to specify the options of [@mdit/plugin-attrs](https://mdit-plugins.github.io/attrs.html#advanced).
+
+### mark
+
+- Type: `boolean`
+
+- Details: Whether to enable mark format support
+
+### spoiler
+
+- Type: `boolean`
+
+- Details: Whether to enable spoiler support
+
+### sup
+
+- Type: `boolean`
+
+- Details: Whether to enable superscript format support
+
+### sub
+
+- Type: `boolean`
+
+- Details: Whether to enable subscript format support
+
+### custom
+
+- Type: `MarkdownItStylizeConfig[]`
+
+- Details:
+
+ Create own stylize customizations. For details, see [@mdit/plugin-stylize](https://mdit-plugins.github.io/stylize.html#usage)
diff --git a/docs/zh/plugins/markdown/markdown-stylize.md b/docs/zh/plugins/markdown/markdown-stylize.md
new file mode 100644
index 000000000..c2ae4254c
--- /dev/null
+++ b/docs/zh/plugins/markdown/markdown-stylize.md
@@ -0,0 +1,257 @@
+# markdown-stylize
+
+
+
+在 VuePress 站点中为内容添加样式。
+
+## 使用方法
+
+```bash
+npm i -D @vuepress/plugin-markdown-stylize@next
+```
+
+```ts
+import { markdownStylizePlugin } from '@vuepress/plugin-markdown-stylize'
+
+export default {
+ plugins: [
+ markdownStylizePlugin({
+ // 配置项
+ }),
+ ],
+}
+```
+
+## 语法
+
+### 对齐内容
+
+你可以使用 `left` `center` `right` `justify` 来对齐文本。
+
+:::: details 示例
+
+::: left
+左对齐的内容
+:::
+
+::: center
+居中的内容
+:::
+
+::: right
+右对齐的内容
+:::
+
+::: justify
+两端对齐的内容
+:::
+
+```md
+::: left
+左对齐的内容
+:::
+
+::: center
+居中的内容
+:::
+
+::: right
+右对齐的内容
+:::
+
+::: justify
+两端对齐的内容
+:::
+```
+
+::::
+
+### 添加属性
+
+你可以使用语法 `{attrs}` 来为 Markdown 元素添加属性。
+
+比如,如果你想要一个 id 为 say-hello-world,文字为 Hello World 的二级标题,你可以使用:
+
+```md
+## Hello World {#say-hello-world}
+```
+
+如果你想要一个有 full-width Class 的图片,你可以使用:
+
+```md
+![img](link/to/image.png) {.full-width}
+```
+
+同时也支持其他属性:
+
+```md
+一个包含文字的段落。 {#p .a .b align=center customize-attr="content with spaces"}
+```
+
+会被渲染为:
+
+```html
+
+ 一个包含文字的段落。
+
+```
+
+完整的示例请参考 [@mdit/plugin-attrs](https://mdit-plugins.github.io/zh/attrs.html#demo)。
+
+### 高亮内容
+
+你可以使用 `== ==` 来通过 `` 标记内容。请注意标记两侧需要有空格。
+
+::: details 案例
+
+VuePress ==非常== 强大!
+
+```md
+VuePress ==非常== 强大!
+```
+
+:::
+
+### 创建剧透
+
+你可以使用使用 `!! !!` 标记剧透文字。请注意标记两侧需要有空格。
+
+::: details 案例
+
+VuePress !!非常强大!!!
+
+```md
+VuePress !!非常强大!!!
+```
+
+:::
+
+### 上下标
+
+你可以使用 `^` 来标记上标,`~` 来标记下标。
+
+::: details 案例
+
+H~2~O 是液体,2^10^ 是 1024.
+
+```md
+H~2~O 是液体,2^10^ 是 1024.
+```
+
+:::
+
+### 创建自己的样式化
+
+`custom` 选项接收一个数组,其中每个元素接受 2 个选项:
+
+- `matcher`:应为 `string` 或 `RegExp`。
+
+- `replacer`: 自定义匹配标记的函数
+
+例如,你可以使用以下配置将 `*推荐*` 转换为徽章 推荐:
+
+```js {6-18} title=".vuepress/config.js"
+import { mdEnhancePlugin } from 'vuepress-plugin-md-enhance'
+
+export default {
+ plugins: [
+ mdEnhancePlugin({
+ stylize: [
+ {
+ matcher: '推荐',
+ replacer: ({ tag }) => {
+ if (tag === 'em')
+ return {
+ tag: 'Badge',
+ attrs: { type: 'tip' },
+ content: '推荐',
+ }
+
+ return null
+ },
+ },
+ ],
+ }),
+ ],
+}
+```
+
+另一个例子是你想要将所有的“不或者没”开头的强调词设置为红色,这样 `设置它*没有*任何效果,请*不要*这样使用。`变成:“设置它没有任何效果,请不要这样使用。"
+
+```js {6-18} title=".vuepress/config.js"
+import { mdEnhancePlugin } from 'vuepress-plugin-md-enhance'
+
+export default {
+ plugins: [
+ mdEnhancePlugin({
+ stylize: [
+ {
+ matcher: /^(不|没)/,
+ replacer: ({ tag, attrs, content }) => {
+ if (tag === 'em')
+ return {
+ tag: 'span',
+ attrs: { ...attrs, style: 'color: red' },
+ content,
+ }
+
+ return null
+ },
+ },
+ ],
+ }),
+ ],
+}
+```
+
+同时,你也可以在 frontmatter 总通过 `stylize` 选项来自定义此页面额外的匹配标记的函数。
+
+## 配置项
+
+### align
+
+- 类型: `boolean`
+
+- 详情: 是否启用对齐支持。
+
+### attrs
+
+- 类型: `MarkdownItAttrsOptions | boolean`
+
+- 详情:
+
+ 是否启用 attrs 支持。
+
+ 你也可以传递一个对象来指定 [@mdit/plugin-attrs](https://mdit-plugins.github.io/zh/attrs.html#高级) 的选项。
+
+### mark
+
+- 类型: `boolean`
+
+- 详情: 是否启用标记格式支持。
+
+### spoiler
+
+- 类型: `boolean`
+
+- 详情: 是否启用剧透支持。
+
+### sup
+
+- 类型: `boolean`
+
+- 详情: 是否启用上标格式支持。
+
+### sub
+
+- 类型: `boolean`
+
+- 详情: 是否启用下标格式支持。
+
+### custom
+
+- 类型: `MarkdownStylizeCustomOptions[]`
+
+- 详情:
+
+ 创建自定义样式化。详情请参阅 [@mdit/plugin-stylize](https://mdit-plugins.github.io/zh/stylize.html#使用)
diff --git a/plugins/markdown/plugin-markdown-stylize/package.json b/plugins/markdown/plugin-markdown-stylize/package.json
new file mode 100644
index 000000000..6de8356d5
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "@vuepress/plugin-markdown-stylize",
+ "version": "2.0.0-rc.54",
+ "description": "VuePress plugin - markdown stylize",
+ "keywords": [
+ "vuepress-plugin",
+ "vuepress",
+ "plugin",
+ "markdown",
+ "stylize"
+ ],
+ "homepage": "https://ecosystem.vuejs.press/plugins/markdown/markdown-stylize.html",
+ "bugs": {
+ "url": "https://github.com/vuepress/ecosystem/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/vuepress/ecosystem.git",
+ "directory": "plugins/markdown/plugin-markdown-stylize"
+ },
+ "license": "MIT",
+ "author": {
+ "name": "Mr.Hope",
+ "email": "mister-hope@outlook.com",
+ "url": "https://mister-hope.com"
+ },
+ "type": "module",
+ "exports": {
+ ".": "./lib/node/index.js",
+ "./package.json": "./package.json"
+ },
+ "main": "./lib/node/index.js",
+ "types": "./lib/node/index.d.ts",
+ "files": [
+ "lib"
+ ],
+ "scripts": {
+ "build": "tsc -b tsconfig.build.json",
+ "bundle": "rollup -c rollup.config.ts --configPlugin esbuild",
+ "clean": "rimraf --glob ./lib ./*.tsbuildinfo"
+ },
+ "dependencies": {
+ "@mdit/plugin-align": "^0.13.1",
+ "@mdit/plugin-attrs": "^0.13.1",
+ "@mdit/plugin-mark": "^0.13.1",
+ "@mdit/plugin-spoiler": "^0.13.1",
+ "@mdit/plugin-stylize": "^0.13.3",
+ "@mdit/plugin-sub": "^0.13.1",
+ "@mdit/plugin-sup": "^0.13.1",
+ "@types/markdown-it": "^14.1.2",
+ "@vuepress/helper": "workspace:*"
+ },
+ "peerDependencies": {
+ "vuepress": "2.0.0-rc.18"
+ },
+ "devDependencies": {
+ "markdown-it": "^14.1.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/plugins/markdown/plugin-markdown-stylize/rollup.config.ts b/plugins/markdown/plugin-markdown-stylize/rollup.config.ts
new file mode 100644
index 000000000..f970a5d27
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/rollup.config.ts
@@ -0,0 +1,13 @@
+import { rollupBundle } from '../../../scripts/rollup.js'
+
+export default rollupBundle('node/index', {
+ external: [
+ '@mdit/plugin-align',
+ '@mdit/plugin-attrs',
+ '@mdit/plugin-mark',
+ '@mdit/plugin-spoiler',
+ '@mdit/plugin-stylize',
+ '@mdit/plugin-sub',
+ '@mdit/plugin-sup',
+ ],
+})
diff --git a/plugins/markdown/plugin-markdown-stylize/src/node/index.ts b/plugins/markdown/plugin-markdown-stylize/src/node/index.ts
new file mode 100644
index 000000000..3bb01fbdf
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/src/node/index.ts
@@ -0,0 +1,2 @@
+export * from './markdownStylizePlugin.js'
+export type * from './options.js'
diff --git a/plugins/markdown/plugin-markdown-stylize/src/node/markdownStylizePlugin.ts b/plugins/markdown/plugin-markdown-stylize/src/node/markdownStylizePlugin.ts
new file mode 100644
index 000000000..cff6d25b6
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/src/node/markdownStylizePlugin.ts
@@ -0,0 +1,43 @@
+import { align as alignPlugin } from '@mdit/plugin-align'
+import { attrs as attrsPlugin } from '@mdit/plugin-attrs'
+import { mark as markPlugin } from '@mdit/plugin-mark'
+import { spoiler as spoilerPlugin } from '@mdit/plugin-spoiler'
+import { stylize as stylizePlugin } from '@mdit/plugin-stylize'
+import { sub as subPlugin } from '@mdit/plugin-sub'
+import { sup as supPlugin } from '@mdit/plugin-sup'
+import type { Plugin } from 'vuepress/core'
+import type { MarkdownEnv } from 'vuepress/markdown'
+import { isPlainObject } from 'vuepress/shared'
+import type { MarkdownStylizePluginOptions } from './options.js'
+import { prepareConfigFile } from './prepareConfigFile.js'
+
+export const markdownStylizePlugin = ({
+ attrs,
+ align,
+ custom,
+ mark,
+ spoiler,
+ sup,
+ sub,
+}: MarkdownStylizePluginOptions): Plugin => {
+ return {
+ name: '@vuepress/plugin-markdown-stylize',
+
+ extendsMarkdown: (md) => {
+ if (custom)
+ md.use(stylizePlugin, {
+ config: custom,
+ localConfigGetter: (env: MarkdownEnv) =>
+ env.frontmatter?.stylize || null,
+ })
+ if (attrs) md.use(attrsPlugin, isPlainObject(attrs) ? attrs : {})
+ if (align) md.use(alignPlugin)
+ if (mark) md.use(markPlugin)
+ if (spoiler) md.use(spoilerPlugin)
+ if (sub) md.use(subPlugin)
+ if (sup) md.use(supPlugin)
+ },
+
+ clientConfigFile: (app) => prepareConfigFile(app, { spoiler }),
+ }
+}
diff --git a/plugins/markdown/plugin-markdown-stylize/src/node/options.ts b/plugins/markdown/plugin-markdown-stylize/src/node/options.ts
new file mode 100644
index 000000000..faccfb110
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/src/node/options.ts
@@ -0,0 +1,65 @@
+import type { MarkdownItAttrsOptions } from '@mdit/plugin-attrs'
+import type { MarkdownItStylizeConfig } from '@mdit/plugin-stylize'
+
+export interface MarkdownStylizePluginOptions {
+ /**
+ * Whether to enable align support
+ *
+ * 是否启用自定义对齐支持。
+ *
+ * @default false
+ */
+ align?: boolean
+
+ /**
+ * Whether to enable attr support
+ *
+ * 是否启用属性支持。
+ *
+ * @default false
+ */
+ attrs?: MarkdownItAttrsOptions | boolean
+
+ /**
+ * Whether to enable superscript format support
+ *
+ * 是否启用上角标格式支持。
+ *
+ * @default false
+ */
+ sup?: boolean
+
+ /**
+ * Whether to enable subscript format support
+ *
+ * 是否启用下角标格式支持。
+ *
+ * @default false
+ */
+ sub?: boolean
+
+ /**
+ * Whether to enable mark format support
+ *
+ * 是否启用标注支持。
+ *
+ * @default false
+ */
+ mark?: boolean
+
+ /**
+ * Whether to enable spoiler support
+ *
+ * 是否启用剧透支持
+ *
+ * @default false
+ */
+ spoiler?: boolean
+
+ /**
+ * Customizing token stylize
+ *
+ * 自定义标记样式
+ */
+ custom?: MarkdownItStylizeConfig[]
+}
diff --git a/plugins/markdown/plugin-markdown-stylize/src/node/prepareConfigFile.ts b/plugins/markdown/plugin-markdown-stylize/src/node/prepareConfigFile.ts
new file mode 100644
index 000000000..633ab3218
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/src/node/prepareConfigFile.ts
@@ -0,0 +1,15 @@
+import { getRealPath } from '@vuepress/helper'
+import type { App } from 'vuepress'
+
+const { url } = import.meta
+
+export const prepareConfigFile = (
+ app: App,
+ { spoiler }: Record,
+): Promise =>
+ app.writeTemp(
+ `markdown-ext/config.js`,
+ `\
+${spoiler ? `import "${getRealPath('@mdit/plugin-spoiler/style', url)}"\n` : ''}\n
+`,
+ )
diff --git a/plugins/markdown/plugin-markdown-stylize/tsconfig.build.json b/plugins/markdown/plugin-markdown-stylize/tsconfig.build.json
new file mode 100644
index 000000000..85b37d29a
--- /dev/null
+++ b/plugins/markdown/plugin-markdown-stylize/tsconfig.build.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../../tsconfig.build.json",
+ "compilerOptions": {
+ "rootDir": "./src",
+ "outDir": "./lib"
+ },
+ "include": ["./src"],
+ "references": [{ "path": "../../../tools/helper/tsconfig.build.json" }]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index abdf37cea..06fdde501 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -158,6 +158,9 @@ importers:
'@vuepress/plugin-markdown-math':
specifier: workspace:*
version: link:../plugins/markdown/plugin-markdown-math
+ '@vuepress/plugin-markdown-stylize':
+ specifier: workspace:*
+ version: link:../plugins/markdown/plugin-markdown-stylize
'@vuepress/plugin-markdown-tab':
specifier: workspace:*
version: link:../plugins/markdown/plugin-markdown-tab
@@ -745,6 +748,43 @@ importers:
specifier: ^14.1.0
version: 14.1.0
+ plugins/markdown/plugin-markdown-stylize:
+ dependencies:
+ '@mdit/plugin-align':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@mdit/plugin-attrs':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@mdit/plugin-mark':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@mdit/plugin-spoiler':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@mdit/plugin-stylize':
+ specifier: ^0.13.3
+ version: 0.13.3(markdown-it@14.1.0)
+ '@mdit/plugin-sub':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@mdit/plugin-sup':
+ specifier: ^0.13.1
+ version: 0.13.1(markdown-it@14.1.0)
+ '@types/markdown-it':
+ specifier: ^14.1.2
+ version: 14.1.2
+ '@vuepress/helper':
+ specifier: workspace:*
+ version: link:../../../tools/helper
+ vuepress:
+ specifier: 2.0.0-rc.18
+ version: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@22.7.7)(jiti@1.21.6)(lightningcss@1.27.0)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)(tsx@4.19.1)(typescript@5.6.3)(yaml@2.4.5))(@vuepress/bundler-webpack@2.0.0-rc.18(esbuild@0.23.1)(typescript@5.6.3))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
+ devDependencies:
+ markdown-it:
+ specifier: ^14.1.0
+ version: 14.1.0
+
plugins/markdown/plugin-markdown-tab:
dependencies:
'@mdit/plugin-tab':
@@ -2390,6 +2430,24 @@ packages:
markdown-it:
optional: true
+ '@mdit/plugin-align@0.13.1':
+ resolution: {integrity: sha512-g8je53oEpYNHEudhtB5ViSiAaiMcca+hvoGbInhLl979tWuvEosOs0oWH2X3GM4f6goTGx8gLwzA10Z5C4FxIQ==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
+ '@mdit/plugin-attrs@0.13.1':
+ resolution: {integrity: sha512-3saBw5W2y3T0QNbui+uk7nfD36FOoBWNQImk+pbMGpKRqunjouiYP4ZtnttT/AiieGbZBVaOqhM4e01Uyua8VA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
'@mdit/plugin-container@0.13.1':
resolution: {integrity: sha512-mFfm7YViyLHo8uORVa9oLi9+acZZoSVdPf3WPqzC/yLZAJbF27rfJgWZ9Kylt+tyaAYng8L4DiSeVcSNUIHF1A==}
engines: {node: '>= 18'}
@@ -2453,6 +2511,15 @@ packages:
markdown-it:
optional: true
+ '@mdit/plugin-mark@0.13.1':
+ resolution: {integrity: sha512-UV+7cSY8iQXlfnrIJ/gEpgwiL2SSVzVLtaWMOV0J4tRSsdtN8ZXnJn/gC547SxBaOLIkt+0ObSskXaCH/UzuIA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
'@mdit/plugin-mathjax-slim@0.13.1':
resolution: {integrity: sha512-ZFtKG2BtLAk1BarJZei9HP4aK0vNU7YvDb+R+nApK7MRmLQ53xHe7upu3qlfNBoOZWHXsdRmcz0G4xL3oxzlqA==}
engines: {node: '>= 18'}
@@ -2465,6 +2532,42 @@ packages:
mathjax-full:
optional: true
+ '@mdit/plugin-spoiler@0.13.1':
+ resolution: {integrity: sha512-6aOD+kjGavkn+Ta0Iq8AUfBG3UsKsL5e0pxi0Eng13lIEp8DrDw36W+E6fLOFtX8Te3ays6eTkTc1I5WzHO0Gw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
+ '@mdit/plugin-stylize@0.13.3':
+ resolution: {integrity: sha512-+rNO8uDwtGkpGD7Xkz44wtkACrppKZK+Z5DWRHAyy1rMBlp6iUHn28fdR5Lw5dM05cTB23XjTHLViouOHhvhig==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
+ '@mdit/plugin-sub@0.13.1':
+ resolution: {integrity: sha512-2rIvEl6pXUoXIm3JMO5ZOQ+vWIeFXmLkqxcmTZB2yOIfhYdLwIcSyquRwtI2AX8zCuvaTdiQ/aypvIE4tDoURw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
+ '@mdit/plugin-sup@0.13.1':
+ resolution: {integrity: sha512-vkNif2Rbj7/gtk4/HJt5hnb+Dcbnek/V4HtLdtqUUnq9bIbzFBpYw5jZ1ZKKZeetDtRvOUPH5oy5d7iXAHorUg==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.1.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+
'@mdit/plugin-tab@0.13.2':
resolution: {integrity: sha512-evpIXvo6vXRWhgNE6vu4ok1I2dVOzrBYmBUGc1gW8nT9MvkW9litu7RbJ6CafscqaiiYRIM5Oib1ahS0lwte6g==}
peerDependencies:
@@ -2674,35 +2777,30 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-arm64-glibc@2.4.1':
resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.4.1':
resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.4.1':
resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.4.1':
resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@parcel/watcher-win32-arm64@2.4.1':
resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==}
@@ -2817,55 +2915,46 @@ packages:
resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
cpu: [arm]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
cpu: [arm]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.24.0':
resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.24.0':
resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
cpu: [ppc64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
cpu: [riscv64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.24.0':
resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
cpu: [s390x]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.24.0':
resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.24.0':
resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
cpu: [x64]
os: [linux]
- libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.24.0':
resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
@@ -5560,28 +5649,24 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
lightningcss-linux-arm64-musl@1.27.0:
resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
lightningcss-linux-x64-gnu@1.27.0:
resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
lightningcss-linux-x64-musl@1.27.0:
resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
lightningcss-win32-arm64-msvc@1.27.0:
resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==}
@@ -9765,6 +9850,19 @@ snapshots:
optionalDependencies:
markdown-it: 14.1.0
+ '@mdit/plugin-align@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@mdit/plugin-container': 0.13.1(markdown-it@14.1.0)
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
+ '@mdit/plugin-attrs@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
'@mdit/plugin-container@0.13.1(markdown-it@14.1.0)':
dependencies:
'@types/markdown-it': 14.1.2
@@ -9809,6 +9907,12 @@ snapshots:
katex: 0.16.11
markdown-it: 14.1.0
+ '@mdit/plugin-mark@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
'@mdit/plugin-mathjax-slim@0.13.1(markdown-it@14.1.0)(mathjax-full@3.2.2)':
dependencies:
'@mdit/plugin-tex': 0.13.1(markdown-it@14.1.0)
@@ -9818,6 +9922,30 @@ snapshots:
markdown-it: 14.1.0
mathjax-full: 3.2.2
+ '@mdit/plugin-spoiler@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
+ '@mdit/plugin-stylize@0.13.3(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
+ '@mdit/plugin-sub@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
+ '@mdit/plugin-sup@0.13.1(markdown-it@14.1.0)':
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ optionalDependencies:
+ markdown-it: 14.1.0
+
'@mdit/plugin-tab@0.13.2(markdown-it@14.1.0)':
dependencies:
'@types/markdown-it': 14.1.2
diff --git a/tsconfig.build.json b/tsconfig.build.json
index 1076a9fe3..32e9c295e 100644
--- a/tsconfig.build.json
+++ b/tsconfig.build.json
@@ -52,6 +52,9 @@
},
{ "path": "./plugins/markdown/plugin-markdown-image/tsconfig.build.json" },
{ "path": "./plugins/markdown/plugin-markdown-math/tsconfig.build.json" },
+ {
+ "path": "./plugins/markdown/plugin-markdown-stylize/tsconfig.build.json"
+ },
{ "path": "./plugins/markdown/plugin-markdown-tab/tsconfig.build.json" },
{
"path": "./plugins/markdown/plugin-prismjs/tsconfig.build.json"