# 构建配置

## builderConfig

- Type: `Object`

用于自定义 Modern.js Builder 的配置项，完整配置项请查看 [Modern.js Builder - API](https://modernjs.dev/builder/api/index.html)。

比如，将产物目录修改为 `doc_dist`：

```ts title="modern.config.ts"
export default defineConfig({
  doc: {
    builderConfig: {
      output: {
        distPath: {
          root: 'doc_dist',
        },
      },
    },
  },
});
```

### 默认配置

如果你需要查看默认的 `builderConfig`，可以在执行 `modern dev` 或 `modern build` 命令时，添加 `DEBUG=builder` 参数：

```bash
DEBUG=builder modern dev
```

在执行后，`doc_build` 目录下会生成 `builder.config.js` 文件，里面包含了完整的 `builderConfig`。

> 请查看 [Modern.js Builder - 调试模式](https://modernjs.dev/builder/guide/debug/debug-mode.html) 来了解更多调试 Builder 的方法。

## markdown

- Type: `Object`

配置 MDX 相关的编译能力。

### markdown.remarkPlugins

- Type: `Array`
- Default: `[]`

配置 remark 插件。比如：

```ts title="modern.config.ts"
import docTools, { defineConfig } from '@modern-js/doc-tools';

export default defineConfig({
  doc: {
    markdown: {
      remarkPlugins: [
        [
          require('remark-autolink-headings'),
          {
            behavior: 'wrap',
          },
        ],
      ],
    },
  },
  plugins: [docTools()],
});
```

### markdown.rehypePlugins

- Type: `Array`

配置 rehype 插件。比如：

```ts title="modern.config.ts"
import docTools, { defineConfig } from '@modern-js/doc-tools';

export default defineConfig({
  doc: {
    markdown: {
      rehypePlugins: [
        [
          require('rehype-autolink-headings'),
          {
            behavior: 'wrap',
          },
        ],
      ],
    },
  },
  plugins: [docTools()],
});
```

### markdown.checkDeadLinks

- Type: `boolean`
- Default: `false`

是否检查死链。比如：

```ts title="modern.config.ts"
import docTools, { defineConfig } from '@modern-js/doc-tools';

export default defineConfig({
  doc: {
    markdown: {
      checkDeadLinks: true,
    },
  },
  plugins: [docTools()],
});
```

开启这个配置后，框架会基于约定式路由表对文档中的链接进行检查，若出现无法访问的链接，构建会抛出错误并退出。

:::warning
不过我们并不推荐在开发阶段使用这个功能，因为它会禁用底层构建工具 webpack 的物理缓存，导致项目启动速度变慢。
:::

### markdown.experimentalMdxRs

- Type: `boolean`

是否使用 MDX 的 Rust 版本编译器，为实验性质功能。比如：

import MdxRs from '../../fragments/mdx-rs';

<MdxRs />

### markdown.showLineNumbers

- Type: `boolean`

是否显示代码块的行号。默认为 `false`。
