vue-nuxt-docgen

A simple, zero-dependency documentation generator for Vue 3 and TypeScript projects.
2,276
Install
npm install vue-nuxt-docgen
Latest Version:1.0.0
License:ISC
Last Updated:Dec 19, 2025
Links: npm
Maintainer: vladimir7373

Simple Vue DocGen

Простой генератор документации без зависимостей для проектов на Vue 3, Nuxt и TypeScript. Он парсит JSDoc комментарии, метаданные компонентов Vue (props, slots, emits) и генерирует Markdown файлы.

English Version

Код как Документация (Code as Documentation)

Этот инструмент создан на основе парадигмы Code as Documentation. Вместо того чтобы поддерживать отдельные вики-страницы, которые устаревают, вы пишете документацию прямо в коде.

  • Единый источник истины: Ваш код — это и есть документация.
  • Готовность к Nuxt: Идеально подходит для документирования слоев, модулей и компонентов Nuxt 3.
  • Поддерживаемость: Изменения в коде мгновенно отражаются в сгенерированной документации.

Возможности

  • Поддержка Vue 3: Парсит defineProps, defineEmits, slots и описание компонента.
  • Поддержка TypeScript: Парсит интерфейсы, типы и обобщенные блоки JSDoc.
  • Без зависимостей: Построен с использованием стандартных библиотек Node.js (fs, path).
  • Пакетная обработка: Может сканировать несколько директорий и повторять структуру в выходной папке.
  • Настраиваемость: Поддерживает шаблоны исключений и кастомные входные/выходные директории.

Установка

npm install vue-nuxt-docgen --save-dev

Использование

1. Использование через CLI

Один файл:

npx vue-nuxt-docgen src/components/MyComponent.vue docs/MyComponent.md

Пакетный режим (Конфигурация по умолчанию): Запустите в корне вашего проекта, где находится docgen.config.js:

npx vue-nuxt-docgen

Пакетный режим (Кастомный конфиг):

npx vue-nuxt-docgen my-docgen-config.js

2. Конфигурация (docgen.config.js)

Создайте файл docgen.config.js в корне вашего проекта:

export default {
	// Директории для сканирования (массив или строка)
	inputDir: ["src/components", "src/core"],

	// Выходная директория для markdown файлов
	outputDir: "docs/codebase",

	// Расширения файлов для парсинга
	extensions: [".vue", ".ts", ".js"],

	// Директории для игнорирования при сканировании
	excludeDir: ["node_modules", ".git", "dist"],

	// Шаблоны файлов для исключения (поддерживает простые wildcard *)
	excludeFiles: ["*.test.ts", "*.spec.ts", "*.stories.ts"],
};

Руководство по документированию

Поддерживаемые теги

Генератор парсит стандартные теги JSDoc. Специальная обработка применяется к следующим тегам:

Тег Контекст Описание
@displayName Компонент Устанавливает заголовок документа (переопределяет имя файла).
@description Любой Основное описание. Может быть неявным (текст без тега).
@example Любой Рендерит отформатированный блок кода.
@default Props Указывает значение по умолчанию в таблице Props.
@slot Шаблон Описывает слот (используйте в HTML комментариях <!-- @slot ... -->).
@author Любой Отображает информацию об авторе.
@file / @module Файл Устанавливает заголовок документа для не-Vue файлов.

Любые другие теги (например, @version, @deprecated, @since) выводятся в общем списке "Tags".

Примеры

Смотрите папку examples/ для полных сценариев использования:

Исходный файл Сгенерированная документация Описание
FullFeatureComponent.vue FullFeatureComponent.md Vue компонент с Props, Events, Slots.
ComplexLogic.ts ComplexLogic.md TypeScript модуль с интерфейсами и классами.

Чтобы запустить генерацию примеров локально:

npm run example

Это создаст документацию в папке examples/generated-docs/.

Написание документации для компонентов

Секция скрипта: Используйте JSDoc комментарии в вашем скрипте или <script setup>.

<script setup lang="ts">
/**
 * @displayName MyButton
 * @description Основной компонент кнопки с различными стилями.
 * @author John Doe
 */
interface Props {
	/**
	 * Текст для отображения внутри кнопки.
	 * @default 'Submit'
	 */
	label?: string;
}

defineProps<Props>();
</script>

Секция шаблона: Документируйте слоты используя HTML комментарии непосредственно перед тегом <slot>.

<template>
	<button>
		<!-- @slot Иконка для отображения перед текстом -->
		<slot name="icon"></slot>
	</button>
</template>

Related Packages

@habityzer/nuxt-openapi-composables

Generate type-safe Nuxt 3 & 4 composables from OpenAPI schemas

1,549 0
nuxt-toc

Table of Contents component for Nuxt Content (v2 and v3)

3,709 11
@vuepress/markdown

markdown for vuepress

3,908,522 22,716
nuxt-llms

Generate llms.txt documentation for your Nuxt application

1,000,918 171

Version History

Version Released License
1.0.0 ISC