Перейти к основному содержанию

Включение файлов

Около 3 минMarkdownДемонстрация кодаВключение файлов

Пусть файл Markdown на вашем сайте VuePress поддерживает, включая другие файлы.

Конфиг

TS
// .vuepress/config.ts
import { defineUserConfig } from "vuepress";
import { hopeTheme } from "vuepress-theme-hope";

export default defineUserConfig({
  theme: hopeTheme({
    plugins: {
      mdEnhance: {
        include: true,
      },
    },
  }),
});







 
 
 



Синтаксис

Используйте @include(filename), чтобы включить файл.

Чтобы частично импортировать файл, вы можете указать диапазон включаемых строк:

  • @include(filename{start-end})
  • @include(filename{start-})
  • @include(filename{-end})

Также вы можете указать область файла:

  • @include(filename#region)

Область файла

Область файла — это понятие в vscode, где содержимое области окружено комментариями #region и #endregion.

Вот некоторые примеры:

HTML
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- region snippet -->
    <p>
      Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eligendi,
      repellendus. Voluptatibus alias cupiditate at, fuga tenetur error officiis
      provident quisquam autem, porro facere! Neque quibusdam animi quaerat
      eligendi recusandae eaque.
    </p>
    <!-- endregion snippet -->
    <p>
      Veniam harum illum natus omnis necessitatibus numquam architecto eum
      dignissimos, quos a adipisci et non quam maxime repellendus alias ipsum,
      vero praesentium laborum commodi perferendis velit repellat? Vero,
      cupiditate sequi.
    </p>
  </body>
</html>

Демо

@include(./demo.snippet.md):

@include(./demo.snippet.md)

@include(./demo.snippet.md{9-13}):

@include(./demo.snippet.md{9-13})

@include(./demo.snippet.md#snippet):

@include(./demo.snippet.md#snippet)

Продвинутый

Вы также можете настроить объект для настройки пути к включаемому файлу и поведения включения.

interface IncludeOptions {
  /**
   * handle include filePath
   *
   * @default (path) => path
   */
  resolvePath?: (path: string, cwd: string) => string;

  /**
   * Whether deep include files in included Markdown files
   *
   * @default false
   */
  deep?: boolean;
}

Например: вы можете использовать @src в качестве псевдонима для вашего исходного каталога.

TS
// .vuepress/config.ts
import { getDirname, path } from "@vuepress/utils";
import { defineUserConfig } from "vuepress";
import { hopeTheme } from "vuepress-theme-hope";

const __dirname = getDirname(import.meta.url);

export default defineUserConfig({
  theme: hopeTheme({
    plugins: {
      mdEnhance: {
        // Add `@src` alias support
        include: {
          resolvePath: (file) => {
            if (file.startsWith("@src"))
              return file.replace("@src", path.resolve(__dirname, ".."));

            return file;
          },
        },
      },
    },
  }),
});












 
 
 
 
 
 
 
 




Кроме того, чтобы разместить ваши файлы Markdown непосредственно рядом с вашими реальными файлами, но не хотите, чтобы они отображались как страницы, вы можете установить параметры pagePatterns в конфигурации VuePress. Дополнительные сведения смотрите в pagePatternsopen in new window.

TS
// .vuepress/config.ts
import { defineUserConfig } from "vuepress";
import { hopeTheme } from "vuepress-theme-hope";

export default defineUserConfig({
  // now any file with `.snippet.md` extension will not be rendered as a page
  pagePatterns: ["**/*.md", "!*.snippet.md", "!.vuepress", "!node_modules"],

  theme: hopeTheme({
    plugins: {
      mdEnhance: {
        include: true,
      },
    },
  }),
});