Инструменты и плагины
Правильный выбор инструментов и плагинов может значительно повысить эффективность и качество написания в Markdown. Это руководство представляет различные типы инструментов, которые помогут вам создать полноценный рабочий процесс с Markdown.
Рекомендуемые редакторы
Профессиональные редакторы кода
Visual Studio Code
Особенности: Бесплатный, кроссплатформенный, богатый плагинами
Рекомендуемые плагины:
- Markdown All in One: Полная поддержка Markdown
- Markdown Preview Enhanced: Расширенный предварительный просмотр
- markdownlint: Проверка синтаксиса и линтинг
- Paste Image: Быстрая вставка изображений
- Table Editor: Визуальное редактирование таблиц
- Math to Image: Преобразование математических формул в изображения
Пример конфигурации:
{
"markdown.preview.fontSize": 14,
"markdown.preview.lineHeight": 1.6,
"markdown.extension.toc.levels": "1..6",
"markdown.extension.print.absoluteImgPath": false,
"[markdown]": {
"editor.wordWrap": "on",
"editor.lineNumbers": "on",
"editor.quickSuggestions": false
}
}
Typora
Особенности: WYSIWYG, чистый интерфейс, богатые темы
Основные функции:
- Редактирование с предварительным просмотром в реальном времени
- Поддержка математических формул
- Встроенное рисование диаграмм
- Экспорт в несколько форматов
- Автоматическое копирование изображений
- Визуальное редактирование таблиц
Mark Text
Особенности: Открытый исходный код, предварительный просмотр в реальном времени, отличная производительность
Основные функции:
- Рендеринг предварительного просмотра в реальном времени
- Режим фокусировки
- Поддержка математических формул
- Поддержка блок-схем
- Несколько форматов экспорта
- Пользовательские темы
Онлайн-редакторы
StackEdit
Особенности: Работа в браузере, синхронизация с облаком, совместная работа
Основные возможности:
- Синхронизация в реальном времени с Google Drive, Dropbox
- Публикация на GitHub, платформах блогов
- Поддержка автономной работы
- Математические формулы и диаграммы
- Совместное редактирование
- История версий
Dillinger
Особенности: Простой интерфейс, интеграция с несколькими платформами
Интегрированные платформы:
- GitHub
- Dropbox
- Google Drive
- OneDrive
- Экспорт в HTML, PDF
- Предварительный просмотр в реальном времени
HackMD
Особенности: Совместная работа команды, функции презентации
Функции совместной работы:
- Многопользовательское редактирование в реальном времени
- Система комментариев
- Контроль версий
- Управление правами доступа
- Режим презентации
- Режим книги
Инструменты предварительного просмотра и конвертации
Генераторы статических сайтов
VitePress
Особенности: Экосистема Vue, отличная производительность, современный
// .vitepress/config.js
export default {
title: 'Моя документация',
description: 'Сайт на VitePress',
themeConfig: {
nav: [
{ text: 'Главная', link: '/' },
{ text: 'Руководство', link: '/guide/' }
],
sidebar: {
'/guide/': [
{
text: 'Начало работы',
items: [
{ text: 'Введение', link: '/guide/introduction' },
{ text: 'Установка', link: '/guide/installation' }
]
}
]
}
},
markdown: {
math: true,
mermaid: true,
lineNumbers: true
}
}
GitBook
Особенности: Красивый интерфейс, совместная работа команды, управление версиями
Основные возможности:
- Современный опыт чтения
- Совместное редактирование для команд
- Экспорт в несколько форматов
- Функция поиска
- Встроенная аналитика
- Генерация документации по API
Docusaurus
Особенности: Открытый исходный код от Facebook, экосистема React, поддержка нескольких языков
// docusaurus.config.js
module.exports = {
title: 'Мой сайт',
tagline: 'Слоган моего сайта',
url: 'https://your-docusaurus-test-site.com',
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/',
},
blog: {
showReadingTime: true,
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/blog/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
},
],
],
themeConfig: {
navbar: {
title: 'Мой сайт',
logo: {
alt: 'Логотип моего сайта',
src: 'img/logo.svg',
},
},
},
};
Инструменты конвертации форматов
Pandoc
Особенности: Универсальный конвертер, CLI-инструмент, поддержка множества форматов
# Markdown в PDF
pandoc document.md -o document.pdf
# Markdown в Word
pandoc document.md -o document.docx
# Markdown в HTML (с пользовательским стилем)
pandoc document.md -s --css=style.css -o document.html
# Пакетное преобразование
find . -name "*.md" -exec pandoc {} -o {}.pdf \;
# Использование шаблона
pandoc document.md --template=template.html -o output.html
# Генерация оглавления
pandoc document.md --toc --toc-depth=3 -o document.pdf
markdownlint
Особенности: Проверка синтаксиса, унифицированные стандарты, автоматическое исправление
# Установка
npm install -g markdownlint-cli
# Проверка одного файла
markdownlint README.md
# Проверка директории
markdownlint docs/
Пример конфигурации:
{
"default": true,
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
},
"MD033": {
"allowed_elements": ["div", "span", "img", "a"]
},
"MD041": false
}
Инструменты обработки изображений и медиа
Инструменты обработки изображений
PicGo
Особенности: Автозагрузка, поддержка нескольких платформ, плагины расширений
Поддерживаемые платформы:
- Qiniu Cloud
- Tencent Cloud COS
- Upyun
- GitHub
- Alibaba Cloud OSS
- Imgur
- Пользовательская загрузка
Пример конфигурации:
{
"picBed": {
"uploader": "github",
"github": {
"repo": "username/image-repo",
"token": "your_github_token",
"path": "images/",
"customUrl": "https://cdn.jsdelivr.net/gh/username/image-repo",
"branch": "main"
}
},
"settings": {
"autoRename": true,
"uploadNotification": true
}
}
ImageOptim / TinyPNG
Особенности: Сжатие изображений, уменьшение размера, сохранение качества
# Использование ImageOptim CLI
imageoptim *.png *.jpg
# Использование TinyPNG API
curl --user api:YOUR_API_KEY \
--data-binary @original.png \
--output compressed.png \
https://api.tinify.com/shrink
Инструменты генерации диаграмм
draw.io (diagrams.net)
Особенности: Бесплатный, мощный, экспорт в несколько форматов
Применения:
- Диаграммы архитектуры системы
- Дизайн блок-схем
- UML диаграммы
- Диаграммы топологии сети
- Mind maps
- Прототипирование
Excalidraw
Особенности: Ручной стиль, совместное редактирование, легко использовать
Особенные функции:
- Диаграммы ручного стиля
- Реальное временное сотрудничество
- Работа в автономном режиме
- Экспорт PNG/SVG
- Управление библиотекой
- Бесконечный холст
Инструменты управления документацией
Инструменты совместной работы команды
Notion
Особенности: Все-в-одном рабочее пространство, функции баз данных, богатые шаблоны
Функции документа:
- Иерархическая структура страниц
- Реальное совместное редактирование
- Интеграция с базами данных
- Система шаблонов
- Поддержка мультимедиа
- Интеграция API
Confluence
Особенности: Предприятийный уровень, управление доступом, сильная интеграция
Предприятийные функции:
- Расширенный контроль доступа
- Управление рабочими процессами
- Брендирование
- Предприятийная интеграция
- Расширенный поиск
- Аналитические отчеты
GitBook
Особенности: Разработчики-ориентированный, контроль версий, красивый интерфейс
Основные преимущества:
- Интеграция Git
- История версий
- Совместная работа
- Пользовательский домен
- Функция поиска
- Аналитические данные
Инструменты публикации
GitHub Pages
Особенности: Бесплатное размещение, контроль версий, пользовательский домен
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
Netlify
Особенности: Быстрая развертывание, CDN-ускорение, обработка форм
# netlify.toml
[build]
publish = "dist"
command = "npm run build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "16"
Vercel
Особенности: Нулевая конфигурация развертывания, глобальный CDN, предварительные развертывания
{
"builds": [
{
"src": "package.json",
"use": "@vercel/static-build",
"config": {
"distDir": "dist"
}
}
],
"routes": [
{
"handle": "filesystem"
},
{
"src": "/(.*)",
"dest": "/index.html"
}
]
}
Инструменты автоматизации
Интеграция CI/CD
GitHub Actions
Пример рабочего процесса:
name: Documentation Build and Deploy
on:
push:
branches: [ main ]
paths: [ 'docs/**' ]
pull_request:
branches: [ main ]
paths: [ 'docs/**' ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Lint Markdown
uses: articulate/actions-markdownlint@v1
with:
config: .markdownlint.json
files: 'docs/**/*.md'
build:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build VitePress
run: npm run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: docs/.vitepress/dist
deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
Pre-commit Hooks
Файл конфигурации .pre-commit-config.yaml
:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.32.2
hooks:
- id: markdownlint
args: ['--fix']
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
language_version: python3
- repo: local
hooks:
- id: docs-build
name: Build documentation
entry: npm run docs:build
language: system
files: '^docs/.*\.md$'
pass_filenames: false
Инструменты генерации документации
Автоматическая генерация документации API
// Использование JSDoc для генерации документации API
/**
* Создание нового пользователя
* @param {Object} userData - Данные пользователя
* @param {string} userData.name - Имя пользователя
* @param {string} userData.email - Адрес электронной почты
* @param {string} [userData.role=user] - Роль пользователя
* @returns {Promise<Object>} Созданный объект пользователя
* @example
* const user = await createUser({
* name: 'John Doe',
* email: 'john@example.com'
* });
*/
async function createUser(userData) {
// Реализация...
}
# Генерация документации
jsdoc src/ -d docs/api/ -c jsdoc.conf.json
OpenAPI/Swagger документация
# openapi.yaml
openapi: 3.0.0
info:
title: API управления пользователями
version: 1.0.0
description: RESTful API для системы управления пользователями
paths:
/users:
post:
summary: Создание нового пользователя
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: Пользователь успешно создан
content:
application/json:
schema:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: string
example: "12345"
name:
type: string
example: "John Doe"
email:
type: string
format: email
example: "john@example.com"
CreateUserRequest:
type: object
required:
- name
- email
properties:
name:
type: string
email:
type: string
format: email
role:
type: string
default: "user"
Инструменты оптимизации производительности
Оптимизация сборки
Скрипт оптимизации изображений
// optimize-images.js
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
async function optimizeImages(dir) {
const files = fs.readdirSync(dir);
for (const file of files) {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
await optimizeImages(filePath);
} else if (/\.(jpg|jpeg|png)$/i.test(file)) {
const outputPath = filePath.replace(/\.(jpg|jpeg|png)$/i, '.webp');
await sharp(filePath)
.webp({ quality: 80 })
.toFile(outputPath);
console.log(`Оптимизировано: ${file} -> ${path.basename(outputPath)}`);
}
}
}
optimizeImages('./docs/assets/images');
Скрипт сборки документации
// build-docs.js
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
function buildDocs() {
console.log('📝 Начало сборки документации...');
// 1. Проверка синтаксиса Markdown
console.log('🔍 Проверка синтаксиса Markdown...');
execSync('markdownlint docs/', { stdio: 'inherit' });
// 2. Оптимизация изображений
console.log('🖼️ Оптимизация изображений...');
execSync('node optimize-images.js', { stdio: 'inherit' });
// 3. Сборка статического сайта
console.log('��️ Сборка статического сайта...');
execSync('vitepress build docs', { stdio: 'inherit' });
// 4. Генерация sitemap
console.log('🗺️ Генерация sitemap...');
generateSitemap();
console.log('✅ Сборка документации завершена!');
}
function generateSitemap() {
const baseUrl = 'https://yoursite.com';
const pages = findMarkdownFiles('./docs');
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${pages.map(page => ` <url>
<loc>${baseUrl}${page}</loc>
<lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>`).join('\n')}
</urlset>`;
fs.writeFileSync('./docs/.vitepress/dist/sitemap.xml', sitemap);
}
function findMarkdownFiles(dir, basePath = '') {
const files = [];
const items = fs.readdirSync(dir);
for (const item of items) {
const fullPath = path.join(dir, item);
const relativePath = path.join(basePath, item);
if (fs.statSync(fullPath).isDirectory()) {
files.push(...findMarkdownFiles(fullPath, relativePath));
} else if (item.endsWith('.md') && item !== 'README.md') {
const urlPath = relativePath
.replace(/\.md$/, '.html')
.replace(/\\/g, '/');
files.push('/' + urlPath);
}
}
return files;
}
buildDocs();
Руководство по выбору инструментов
Выберите инструменты по потребности
## Личный блог
Рекомендуемый набор:
- Редактор: Typora или Mark Text
- Развертывание: GitHub Pages + Jekyll
- Изображения: PicGo + GitHub
- Версия: Git
## Командная документация
Рекомендуемый набор:
- Платформа: Notion или GitBook
- Редактор: VS Code + плагины
- Версия: Git + GitHub
- Автоматизация: GitHub Actions
## Техническая документация
Рекомендуемый набор:
- Генератор: VitePress или Docusaurus
- Редактор: VS Code
- Развертывание: Netlify или Vercel
- Диаграммы: Mermaid + draw.io
## Документация API
Рекомендуемый набор:
- Инструменты: Swagger/OpenAPI
- Генерация: Redoc или SwaggerUI
- Интеграция: Postman
- Тестирование: Newman
## Академические статьи
Рекомендуемый набор:
- Редактор: Typora + Pandoc
- Формулы: MathJax/KaTeX
- Цитаты: Zotero
- Конвертация: Pandoc LaTeX
Сравнение стоимости
Тип инструмента | Бесплатные опции | Платные опции | Предприятийная версия |
---|---|---|---|
Редактор | VS Code, Mark Text | Typora (¥89) | - |
Хостинг | GitHub Pages | Netlify Pro (¥190/мес) | Предприятийная настройка |
Совместная работа | GitHub | Notion (¥64/мес/пользователь) | Confluence (¥42/мес/пользователь) |
Хостинг изображений | GitHub | Qiniu Cloud (¥0.1/GB) | Предприятийная частная облачная |
Домен | github.io | Пользовательский домен (¥60/год) | Предприятийный домен |
Связанные синтаксисы
- Встраивание HTML - Улучшенные возможности HTML
- Математические формулы - Выражения LaTeX математики
- Диаграммы - Рисование диаграмм
- Лучшие практики - Рекомендации по написанию
Рекомендации по суммированию
Начальный рекомендуемый набор
🚀 Быстрый старт:
1. Редактор: VS Code + Markdown All in One
2. Предварительный просмотр: Плагин предварительного просмотра
3. Версия: Git + GitHub
4. Развертывание: GitHub Pages
5. Изображения: Прямая загрузка в репозиторий
💰 Стоимость: Совершенно бесплатно
⏱️ Время обучения: 1-2 часа
🎯 Подходит для: Личные блоги, небольшие проектные документы
Расширенный рекомендуемый набор
⚡ Профессиональный набор:
1. Редактор: Typora + VS Code
2. Генератор: VitePress
3. Хостинг изображений: PicGo + облачное хранилище
4. Совместная работа: GitHub + Issues
5. Автоматизация: GitHub Actions
6. Мониторинг: Google Analytics
💰 Стоимость: ¥200-500/год
⏱️ Время обучения: 1-2 дня
🎯 Подходит для: Технические команды, открытые проекты
Предприятийный набор
🏢 Предприятийный набор:
1. Платформа: Confluence или GitBook
2. Редактирование: VS Code + плагины команды
3. Версия: Предприятийный Git
4. Развертывание: Частная облачная + CDN
5. Совместная работа: Полное управление правами доступа
6. Интеграция: CI/CD + мониторинг & оповещения
💰 Стоимость: ¥5000-20000/год
⏱️ Время развертывания: 1-2 недели
🎯 Подходит для: Крупные предприятия, документация продукта
Выбирая и настраивая эти инструменты разумно, вы можете создать эффективный и профессиональный рабочий процесс Markdown, значительно улучшив эффективность создания и поддержания документации.