2.0.0 • Published 8 months ago
@visdoc/vite-plugin-visdoc v2.0.0
VitePluginVisDoc
VitePluginVisDoc 是一个用于将markdown文档转为html的插件。
教程
- 安装:
npm install @visdoc/vite-plugin-visdoc --save-dev
使用
// vite.config.js import { defineConfig } from 'vite' import visdoc from 'vite-plugin-visdoc' import { resolve } from 'path' export default defineConfig({ plugins: [visdoc()] })
功能配置:
/**
* 插件配置
*/
interface ConfigOptions {
/**
* md文档所在的目录
*
* 相对于`viteConfig.build.root`目录。
*
* @default 'src/docs'
*/
docsDir?: string
/**
* 输出目录
*
* 相对于`viteConfig.build.outDir`目录。
*
* > 注意:只能配置相对路径,不能以/开头,路径相对于`vite.config.build.outDir`路径。
*
* 默认为`docs`假设你没有修改vite配置中的输出目录,则打包过后的html位于`项目ROOT/dist/docs`目录下。
*
* @default 'docs'
*/
outDir?: string
/**
* 缓存目录,用于缓存解析后的文档数据。
*
* @default 'node_modules/.vite/.visdoc'
*/
cacheDir?: string
/**
* 站点地图配置
*/
sitemap?: Sitemap
/**
* 自动打包目录下所有html文件
*
* `template.path`配置的模板文件除外的所有html文件都会视为入口文件,打包至`viteConfig.build.outDir`目录下。
*
* 该选项配合`excludeDirs`可以高效的构建项目,无需手动在`vite.config`中声明`input`入口。
*
* 示例:相对路径['src'],绝对路径[path.resolve(__dirname,'src')]
*
* @default ''
*/
autoBuildDir?: string
/**
* 排除构建的文件列表
*
* 支持绝对路径和相对路径
*
* 可以是html文件或md文件。
*
* @default []
*/
excludeFiles?: string[]
/**
* 排除构建的目录列表
*
* 与`autoBuildDir`配合使用。
*
* 仅支持一级目录,不支持多级目录,文档目录无效。
*
* 示例:['dist','node_modules']
*
* @default []
*/
excludeDirs?: string[]
/**
* 国际化多语言配置
*
*
* @default {enabled: false, defaultLang: 'zh'}
*/
i18n?: I18N
/**
* 分组目录入口文档名称
*
* 入口文档不会出现在分组的子菜单中,它做为分组选项的默认呈现,通常用于分组的前言描述。
*
* 假设存在一个 `src/docs/zh/group/index.md` 文件,那么它的页面标题为 `group`,访问路径为 `/group`|`/group/index.html`。
*
* @default 'index'
*/
index?: string
/**
* 模板生成与替换相关配置
*/
template?: TemplateOptions
/**
* MarkdownIt 配置
*/
markdownIt?: MarkdownItConfig
/**
* 根据文件名称,拆分出文章名称与访问路径。
*/
splitNameAndUrl: (name: string) => { name: string; url: string }
/**
* 日期格式化
*
* 格式化文档创建时间和更新时间。
*
* @default '2024-11-24T21:42:42+08:00'
*/
formatDate: (date: Date) => string
}
// 站点地图配置
interface Sitemap {
/**
* 是否启用自动生成站点地图。
*
* @default false
*/
enabled: boolean
/**
* 域名
*
* 示例:https://www.visdoc.com
*/
loc: string
/**
* 更改频率
*
* @default 'weekly'
*/
changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'
/**
* 优先级
*
* @default 0.5
*/
priority?: number
}
// 国际化
interface I18N {
/**
* 是否启用国际化。
*
* @default false
*/
enabled: boolean
/**
* 默认语言
*
* @default 'zh'
*/
defaultLang?: string
}
// MarkdownIt 配置
interface MarkdownItConfig {
/**
* MarkdownIt 构造配置
*/
options?: MarkdownIt.Options
/**
* MarkdownIt 插件列表
*/
plugins?: MarkdownItPlugin[]
}
// 模板相关
interface TemplateOptions {
/**
* 模板文件路径。
*
* 将文档转换html注入到模板内容中,形成新的html文件
*
* @default 'template.html'
*/
path?: string
/**
* 模板占位符匹配模式。
*/
pattern?: (placeholder: string) => RegExp | string
/**
* 注入文章导航菜单代码。
*
* @default false
*/
injectNavMenu?: boolean
/**
* 注入文章内容菜单代码。
*
* @default false
*/
injectTocMenu?: boolean
/**
* 将`injectNavMenu`生成的代码合并到`injectTocMenu`中。
*
* @default false
*/
mergeMenu?: boolean
/**
* 注入分页数据。
*
* 如果启用,则会在模板中注入上一页、下一页数据。
*
* @default false
*/
injectPaginationData?: boolean
/**
* 占位符配置
*/
placeholder?: Placeholder
/**
* 替换内容,所有打包的HTML都会被扫描替换相关的内容。
*
* @default {}
*/
replace?: Record<string, string | string[]>
}
// 占位符
interface Placeholder {
/**
* 内容占位符
*
* @default 'CONTENT'
*/
content?: string
/**
* 导航菜单占位符
*
* @default 'NAV_MENU'
*/
navMenu?: string
/**
* 内容菜单占位符
*
* @default 'TOC_MENU'
*/
tocMenu?: string
/**
* 前一页链接占位符
*
* @default 'PREVIOUS_PAGE_LINK'
*/
prevPageLink: string
/**
* 前一页名称占位符
*
* @default 'PREVIOUS_PAGE_TITLE'
*/
prevPageTitle: string
/**
* 下一页链接占位符
*
* @default 'NEXT_PAGE_LINK'
*/
nextPageLink: string
/**
* 下一页名称占位符
*
* @default 'NEXT_PAGE_TITLE'
*/
nextPageTitle: string
}
2.0.0
8 months ago
2.0.0-beta.2
8 months ago
2.0.0-beta.1
8 months ago
2.0.0-beta.3
8 months ago
1.3.5
9 months ago
1.3.4
9 months ago
1.3.3
9 months ago
1.3.2
9 months ago
1.3.1
9 months ago
1.2.2
9 months ago
1.2.1
10 months ago
1.0.2
10 months ago
1.0.1
10 months ago
1.0.0
10 months ago