# vuepress 主题

# 介绍

markdown 解析使用 markdown-it (opens new window) 来实现,代码块解析使用 prism (opens new window) 来实现。

效果如下:

# 内置功能

vuepress 主题内置扩展了 tip 功能。同时你也可以在 left-toolbar 属性中配置 tip 来快捷插入。

效果如下:

示例代码:

<template>
  <v-md-editor v-model="text" left-toolbar="undo redo | tip" height="500px" />
</template>

<script>
  const text = `::: tip
  你可以点击 toolbar 中的 tip 来快速插入
:::

::: warning
  这是一段警告
:::

::: danger
  这是一个危险警告
:::

::: details
  这是一个详情块,在 IE / Edge 中不生效
:::

::: tip 自定义标题
  你也可以自定义块中的标题
:::

::: danger STOP
  危险区域,禁止通行
:::
`;

  export default {
    data() {
      return {
        text,
      };
    },
  };
</script>

# 扩展 markdown-it

import VueMarkdownEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
import '@kangc/v-md-editor/lib/theme/style/vuepress.css';

import Prism from 'prismjs';

VueMarkdownEditor.use(vuepressTheme, {
  Prism,
  extend(md) {
    // md为 markdown-it 实例,可以在此处进行修改配置,并使用 plugin 进行语法扩展
    // md.set(option).use(plugin);
  },
});

# 扩展代码高亮语言包

请通过babel-plugin-prismjs (opens new window)插件按需引入对应的语言包。

安装 babel-plugin-prismjs 插件

# yarn
yarn add babel-plugin-prismjs --dev

# npm
npm install babel-plugin-prismjs

按需引入语言包(推荐)

// babel.config.js
module.exports = {
  plugins: [
    [
      'prismjs',
      {
        languages: ['json'],
      },
    ],
  ],
};

引入所有语言包(不推荐)

// babel.config.js
const components = require('prismjs/components');
const allLanguages = Object.keys(components.languages).filter((item) => item !== 'meta');

module.exports = {
  plugins: [
    [
      'prismjs',
      {
        languages: allLanguages,
      },
    ],
  ],
};

# vite 中扩展代码高亮语言包

请通过vite-plugin-prismjs (opens new window)插件按需引入对应的语言包。

安装 vite-plugin-prismjs 插件

# yarn
yarn add vite-plugin-prismjs --dev

# npm
npm install vite-plugin-prismjs

按需引入语言包(推荐)

// vite.config.js
import { defineConfig } from 'vite';
import prismjs from 'vite-plugin-prismjs';

export default defineConfig({
  plugins: [
    prismjs({
      languages: ['json'],
    }),
  ],
});

引入所有语言包(不推荐)

// vite.config.js
import { defineConfig } from 'vite';
import prismjs from 'vite-plugin-prismjs';

export default defineConfig({
  plugins: [
    prismjs({
      languages: 'all',
    }),
  ],
});

查看 prism 支持的语言包 (opens new window)

扩展后就能支持对应的代码块高亮了,如下