В Look Scanned мы постоянно совершенствуем нашу инфраструктуру, чтобы обеспечить лучшую документацию и более безопасные методы разработки. Сегодня мы рады поделиться подробностями о значительном обновлении нашего сайта документации How-To: миграция с пользовательского приложения Vue + Vite на VitePress, одновременно улучшая нашу безопасность CI/CD с помощью npm Trusted Publishers.
📚 Почему мы мигрировали на VitePress
Наш сайт документации How-To (github.com/lookscanned/how-to) служит комплексным руководством по использованию Look Scanned. Хотя наша предыдущая настройка Vue + Vite работала хорошо, мы признали, что VitePress будет лучшим выбором для сайта документации, ориентированного на контент.
Что такое VitePress?
VitePress — это генератор статических сайтов, специально разработанный для документации. Построенный на основе Vite и Vue 3, он сочетает в себе лучшее из обоих миров: молниеносный опыт разработки с мощными функциями документации из коробки.
Ключевые преимущества миграции
🎯 Лучшая архитектура для документации
- Маршрутизация на основе файлов: Каждый файл markdown автоматически становится страницей, делая организацию контента интуитивной
- Встроенные функции документации: Оглавление, поиск, интернационализация и многое другое предварительно настроены
- Генерация статических сайтов: Предварительно отрендеренный HTML обеспечивает отличное SEO и мгновенную загрузку страниц
⚡ Улучшенный опыт разработчика
- Мгновенная горячая перезагрузка: Изменения появляются немедленно во время разработки
- Markdown в первую очередь: Сосредоточьтесь на контенте, а не на создании компонентов
- Поддержка компонентов Vue: При необходимости мы все еще можем использовать пользовательские компоненты Vue внутри markdown
🔧 Упрощенное обслуживание
- Более четкая структура: Документация следует соглашениям, снижая когнитивную нагрузку для участников
- Более стабильные сборки: Принципиальная структура VitePress приводит к более воспроизводимым сборкам
- Лучшее сотрудничество: Члены команды могут вносить вклад в документацию без глубоких знаний Vue
🔒 Улучшенная безопасность с npm Trusted Publishers
Наряду с миграцией VitePress мы внедрили критическое улучшение безопасности: npm Trusted Publishers с использованием аутентификации OIDC.
Проблема с традиционными токенами npm
Ранее для публикации пакетов в npm требовалось хранить долгоживущий NPM_TOKEN в секретах репозитория. У этого подхода есть несколько недостатков:
- Риск безопасности: Токены могут быть случайно раскрыты или скомпрометированы
- Накладные расходы на управление: Токены требуют ручной ротации и обновлений
- Проблемы аудита: Трудно отследить, кто что и когда опубликовал
Решение: Доверенная публикация на основе OIDC
npm Trusted Publishers использует OpenID Connect (OIDC) для обеспечения безопасной публикации без токенов напрямую из GitHub Actions. Вот как это работает:
- Нет сохраненных секретов: Вместо сохранения токенов GitHub Actions запрашивает краткосрочные учетные данные у npm
- Проверка личности: npm проверяет, что запрос на публикацию пришел из авторизованного репозитория GitHub
- Автоматическое управление учетными данными: Учетные данные автоматически выдаются и быстро истекают
Реальные преимущества
Это изменение приносит немедленные улучшения в наш рабочий процесс разработки:
- ✅ Больше никакого управления токенами: Нет необходимости создавать, хранить или ротировать токены npm
- ✅ Уменьшенная поверхность атаки: Краткосрочные учетные данные минимизируют риск раскрытия
- ✅ Лучшая аудитируемость: Каждое действие публикации привязано к конкретному запуску GitHub Actions
- ✅ Современные лучшие практики: Соответствует принципам безопасности нулевого доверия
Техническая заметка: Для поддержки npm Trusted Publishers мы обновили нашу конфигурацию CI для использования Node.js lts/*, гарантируя, что у нас есть последняя версия npm, необходимая для аутентификации OIDC.
📦 График выпусков
Миграция была завершена через три релиза 19 декабря 2025 года:
- v2.0.0: Основная миграция с Vue + Vite на VitePress (критическое изменение)
- v2.0.1: Исправление CI для поддержки npm Trusted Publishers с соответствующей версией Node.js
- v2.0.2: Улучшение производительности путем перемещения
@fontsource/noto-monoв devDependencies
🌍 Продолжение многоязычной поддержки
Важное примечание: наша документация How-To генерирует многоязычные PDF-файлы, которые всегда использовались в качестве примеров файлов в основном приложении Look Scanned (доступно на lookscanned.io/en/scan). Эта миграция VitePress не меняет эту функциональность — она просто обеспечивает лучшую основу для поддержки и улучшения нашей инфраструктуры документации.
💡 Что это значит для пользователей
Если вы используете документацию Look Scanned:
- Тот же доступ, лучший опыт: Документация остается по тому же URL с улучшенной загрузкой и навигацией
- Более надежно: Генерация статических сайтов означает более быструю загрузку и лучшую стабильность
- Лучший поиск и обнаружение: Встроенный поиск VitePress помогает быстрее найти ответы
- Продолжение поддержки PDF: Генерация многоязычных PDF продолжается как прежде
🚀 Что дальше
С завершением обновления инфраструктуры мы сосредоточились на улучшении контента:
- Расширенные примеры использования: Больше практических примеров и пошаговых руководств
- Улучшения согласованности: Уточнение многоязычной терминологии для ясности
- Улучшенный экспорт PDF: Улучшение опыта генерации PDF в разных браузерах
Попробуйте Look Scanned сегодня
Look Scanned предоставляет браузерные эффекты сканирования PDF с приоритетом конфиденциальности без загрузки ваших файлов куда-либо. Улучшенная документация делает начало работы проще, чем когда-либо.
👉 Посетите lookscanned.io, чтобы испытать быстрое, безопасное сканирование документов в вашем браузере.