{"id":22880,"library":"vite-plugin-tdoc","title":"vite-plugin-tdoc","description":"vite-plugin-tdoc (version 2.0.4) is a Vite plugin that transforms Markdown files into anything (e.g., HTML, Vue components) during the build process. Inspired by VitePress, it provides hooks for custom Markdown processing using markdown-it and its ecosystem (containers, attributes, anchors, TOC). It supports before/render/after transforms and can integrate additional Vite plugins. Released under MIT license. The plugin is actively maintained, with a focus on flexibility and developer control over Markdown transformation.","status":"active","version":"2.0.4","language":"javascript","source_language":"en","source_url":"https://github.com/HQ-Lin/vite-plugin-tdoc","tags":["javascript"],"install":[{"cmd":"npm install vite-plugin-tdoc","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-tdoc","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-tdoc","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core Markdown parser used for transforming markdown content.","package":"markdown-it","optional":false},{"reason":"Plugin for custom containers in markdown.","package":"markdown-it-container","optional":true},{"reason":"Plugin for adding attributes to markdown elements.","package":"markdown-it-attrs","optional":true},{"reason":"Plugin for adding anchors to headings.","package":"markdown-it-anchor","optional":true},{"reason":"Plugin for generating table of contents.","package":"markdown-it-toc-done-right","optional":true}],"imports":[{"note":"ESM only; CommonJS require() will fail in Vite.","wrong":"const vitePluginTdoc = require('vite-plugin-tdoc')","symbol":"default","correct":"import vitePluginTdoc from 'vite-plugin-tdoc'"},{"note":"Default export only, not named.","wrong":"import { vitePluginTdoc } from 'vite-plugin-tdoc'","symbol":"vitePluginTdoc","correct":"import vitePluginTdoc from 'vite-plugin-tdoc'"},{"note":"TypeScript users can import Options type for configuration.","wrong":"","symbol":"Type definitions","correct":"import type { Options } from 'vite-plugin-tdoc'"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport vitePluginTdoc from 'vite-plugin-tdoc'\n\nexport default defineConfig({\n  plugins: [\n    vue(),\n    vitePluginTdoc({\n      markdown: {\n        lineNumbers: true,\n        anchor: { permalink: true },\n        config(md) {\n          md.use(require('markdown-it-emoji'))\n        }\n      },\n      transforms: {\n        before({ source }) {\n          return source.replace(/<!--.*?-->/gs, '')\n        }\n      }\n    })\n  ]\n})","lang":"typescript","description":"Shows basic Vite config with vitePluginTdoc, enabling line numbers, anchor links, custom markdown-it plugins, and a before transform to strip HTML comments."},"warnings":[{"fix":"Use dynamic import() instead of require() in config, or mark package as type: module.","message":"Using require() in config file will cause ESM/CJS mismatch in Vite.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Ensure custom container syntax does not interfere with attribute syntax; test combinations.","message":"markdown-it-attrs may conflict with markdown-it-container syntax if both are used carelessly.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Check release notes for migration to direct markdown-it plugin usage.","message":"Options like 'markdown.anchor' and 'markdown.toc' may be deprecated in future versions.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use ES module syntax (export default) in vite config.","message":"The plugin does not work with CommonJS Vite configs (e.g., vite.config.js using module.exports).","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Always return a string from transform hooks or undefined to skip modification.","message":"Transforms 'before', 'render', 'after' must return a string or undefined; returning null/object may break.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Switch vite.config to ES module (type: 'module' in package.json) and use import syntax.","cause":"Using CommonJS require() to load vite-plugin-tdoc in a CJS context.","error":"SyntaxError: Unexpected token 'export'"},{"fix":"Install the optional dependencies: npm install markdown-it-container markdown-it-attrs markdown-it-anchor markdown-it-toc-done-right","cause":"Optional peer dependency markdown-it-container not installed.","error":"Error: Cannot find module 'markdown-it-container'"},{"fix":"Use the config callback correctly: config(md) { md.use(require('markdown-it-emoji')) }","cause":"Trying to call md.use before markdown-it is initialized in config callback.","error":"TypeError: md.use is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}