PDF резюме: Puppeteer-скрипт, кнопка скачивания, имя файла Mamadaev_Nik__CV__Product_Designer_UX-UI
This commit is contained in:
1 parent
322938b5ec
commit
97e56b48bf
45 files changed
+5132
-4197
No files matched your search
@@ -1,57 +0,0 @@
|
||||
# Синхронизация `public` -> `gitverse`
|
||||
|
||||
## Назначение
|
||||
|
||||
Скрипт `sync-gitverse` копирует содержимое `public` в папку `gitverse`, затем выполняет коммит и пуш в репозиторий внутри `gitverse`.
|
||||
|
||||
## Запуск
|
||||
|
||||
- Через npm:
|
||||
- `npm run sync-gitverse`
|
||||
- Напрямую:
|
||||
- `node scripts/sync-gitverse.mjs`
|
||||
- С явными путями:
|
||||
- `node scripts/sync-gitverse.mjs <sourceDir> <targetDir>`
|
||||
|
||||
По умолчанию:
|
||||
|
||||
- `sourceDir = public`
|
||||
- `targetDir = gitverse`
|
||||
|
||||
## Что делает скрипт
|
||||
|
||||
1. Проверяет, что исходная папка существует.
|
||||
2. В целевой папке удаляет всё, кроме:
|
||||
- `.git`
|
||||
- `.gitverse`
|
||||
3. Копирует содержимое `public` в `gitverse` (файлы `.png` пропускаются — в деплое используются WebP и остальные форматы).
|
||||
4. В репозитории `gitverse` выполняет:
|
||||
- `git add .`
|
||||
- `git commit -m "sync public YYYY-MM-DD HH:mm"` (только если есть изменения)
|
||||
- `git push`
|
||||
5. После успешного пуша открывает в системном браузере по умолчанию: `https://mamadaevv.gitverse.site/me/`
|
||||
|
||||
Если изменений после копирования нет, коммит и пуш не делаются.
|
||||
|
||||
## Инструкция для агента (Cursor)
|
||||
|
||||
Когда пользователь просит **выложить на GitVerse**, **собрать/задеплоить gitverse**, **синхронизировать с gitverse** или аналогично:
|
||||
|
||||
1. **Сборка `public/`:** если менялись `src/pages/**` или `src/partials/**` — `npm run build:pages`; если шрифты/Plyr/`package.json` или `scripts/copy-vendor.mjs` — `npm run build` (сначала `vendor:copy`, затем страницы). См. [`docs/vendor-assets.md`](vendor-assets.md).
|
||||
2. **Синк и пуш:** выполни `npm run sync-gitverse` из корня. Нужны разрешения **network** и **git_write** (SSH на GitVerse, пуш из папки `gitverse`).
|
||||
3. **Ожидания:** скрипт не копирует файлы `.png` в `gitverse`. После **успешного** `git push` открывается системный браузер с `https://mamadaevv.gitverse.site/me/`. Если изменений в `gitverse` после копирования нет — коммит/пуш не выполняются, браузер не открывается.
|
||||
4. **Не вызывай** `sync-gitverse` без запроса пользователя: скрипт очищает целевую папку (кроме `.git` и `.gitverse`) и пушит в remote.
|
||||
5. **Корневой git репозиторий** этого проекта считается **только локальным**: не пушь из корня в `origin` и не настраивай remote без явной просьбы пользователя с URL. Внешняя выкладка — через `gitverse`, не через `git push` в корне.
|
||||
6. Деплой на VPS — отдельный сценарий, см. **`docs/vps-deploy.md`**.
|
||||
|
||||
Подробности и ограничения — в разделах выше.
|
||||
|
||||
## Требования
|
||||
|
||||
- В `gitverse` уже должен быть инициализирован git-репозиторий (папка `.git`).
|
||||
- Должен быть настроен доступ на push (SSH-ключ/права).
|
||||
|
||||
## Важно
|
||||
|
||||
- Скрипт удаляет в `gitverse` все файлы и папки, кроме `.git` и `.gitverse`.
|
||||
- Не запускай скрипт, если в `gitverse` есть локальные несохраненные изменения, которые нужно оставить.
|
||||
+5
-11
@@ -1,10 +1,11 @@
|
||||
# Локальный просмотр сайта
|
||||
|
||||
Сайт в режиме разработки обслуживается из папки `**public/**` через [BrowserSync](https://browsersync.io/): при изменении файлов страница в браузере обновляется сама.
|
||||
Сайт в режиме разработки обслуживается из папки `**public/**` через нативный HTTP-сервер (Node.js `http` модуль): статика + API правок контента.
|
||||
|
||||
## Требования
|
||||
|
||||
- Установлены **Node.js** и **npm** (идут вместе с Node).
|
||||
- **Node.js 22** (см. `.node-version` в корне проекта). fnm/fvm переключают автоматически.
|
||||
- **npm** (идёт вместе с Node).
|
||||
|
||||
## Первый раз в проекте
|
||||
|
||||
@@ -23,18 +24,11 @@ npm run vendor:copy
|
||||
npm run serve
|
||||
```
|
||||
|
||||
Скрипт [`scripts/serve-dev.mjs`](../scripts/serve-dev.mjs): статика из `public/`, API правок контента, перезагрузка **только** при изменениях в `public/**` (запись в `texts/content-edits/` вкладку не перезагружает).
|
||||
|
||||
Без API: `npm run serve:static`.
|
||||
Скрипт [`scripts/serve-dev.mjs`](../scripts/serve-dev.mjs): статика из `public/`, API правок контента. Нет авто-релиоада — после правок в `public/` обновляй страницу вручную.
|
||||
|
||||
## Куда смотреть
|
||||
|
||||
- **Сайт:** [http://localhost:4175](http://localhost:4175) — откроется `public/index.html` и остальные пути относительно `public/`.
|
||||
- **Панель BrowserSync UI:** [http://localhost:4176](http://localhost:4176) (опционально, для синхронизации и настроек).
|
||||
|
||||
## Что отслеживается
|
||||
|
||||
Любые изменения в `**public/**`**: HTML, CSS, JS, картинки. Папка `texts/content-edits/` **не** в watch — autosave правок не сбрасывает режим редактирования.
|
||||
|
||||
## API правок контента
|
||||
|
||||
@@ -48,4 +42,4 @@ npm run serve
|
||||
|
||||
## Остановка
|
||||
|
||||
В терминале: **Ctrl+C**.
|
||||
В терминале: **Ctrl+C**.
|
||||
@@ -0,0 +1,52 @@
|
||||
# PDF резюме
|
||||
|
||||
## Генерация PDF
|
||||
|
||||
Скрипт `scripts/generate-resume-pdf.mjs` открывает `resume-5.html` через Puppeteer, применяет шрифт geologica (PT Sans), убирает подложку/обводку блока `.resume-doc` и сохраняет PDF.
|
||||
|
||||
**Важно**: скрипт требует запущенный dev-сервер (`npm run serve` → `localhost:4175`).
|
||||
|
||||
### Запуск
|
||||
|
||||
```bash
|
||||
npm run generate:resume-pdf
|
||||
```
|
||||
|
||||
или вручную:
|
||||
|
||||
```bash
|
||||
node scripts/generate-resume-pdf.mjs http://localhost:4175/resume-5.html geologica
|
||||
```
|
||||
|
||||
Параметры:
|
||||
- `[url]` — URL страницы (по умолчанию `http://localhost:4175/resume-5.html`)
|
||||
- `[font]` — ID шрифта: `geologica`, `merriweather`, `mono` (по умолчанию `geologica`)
|
||||
|
||||
### Выходной файл
|
||||
|
||||
`public/assets/resume/Mamadaev_Nik__CV__Product_Designer_UX-UI.pdf`
|
||||
|
||||
Кнопка «Скачать в PDF» на странице `resume-5.html` — это `<a>` ссылка на этот файл.
|
||||
|
||||
### Когда перегенерировать
|
||||
|
||||
- После правок в `src/pages/resume-5.html` (контент, стили)
|
||||
- После правок в `src/css/resume-5.css` (инлайн-стили в `<style>`)
|
||||
- При смене шрифта по умолчанию в скрипте
|
||||
|
||||
### Что скрипт делает с страницей
|
||||
|
||||
1. Устанавливает шрифт через `localStorage` + `data-font`
|
||||
2. Ждёт загрузки шрифтов (`document.fonts.ready`)
|
||||
3. Удаляет `header`, `footer`, `nav`, `.fab-stack`, `.cookie-notice`, `.skip-link`
|
||||
4. Убирает `max-width` с `.resume-doc`, ставит `width: 100%`
|
||||
5. Убирает фон (`background: transparent`) и обводку (`border: none`)
|
||||
6. Захватывает `.resume-doc` как A4 PDF с `printBackground: true`
|
||||
|
||||
### Не попадает в PDF
|
||||
|
||||
Из `.resume-doc` удаляются (но остаются на сайте):
|
||||
- Фон блока
|
||||
- Обводка блока
|
||||
|
||||
Всё остальное (отступы, шрифты, сетка) — как на сайте.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Локальные vendor-ассеты (шрифты и Plyr)
|
||||
|
||||
Сайт не использует Google Fonts и jsDelivr в рантайме. Файлы лежат в `public/` и попадают на хостинг через `sync-gitverse`.
|
||||
Сайт не использует Google Fonts и jsDelivr в рантайме. Файлы лежат в `public/` и попадают на хостинг через git push.
|
||||
|
||||
## Что где
|
||||
|
||||
@@ -49,7 +49,3 @@ npm run build:pages
|
||||
1. Обновить версию в `package.json` (`dependencies.plyr`).
|
||||
2. `npm install` → `npm run vendor:copy`.
|
||||
3. При смене API — правки в `video-player.js`.
|
||||
|
||||
## Деплой
|
||||
|
||||
Перед `npm run sync-gitverse` выполни `npm run build`, чтобы в `public/` были актуальные шрифты, Plyr и HTML.
|
||||
@@ -1,59 +0,0 @@
|
||||
# Деплой на VPS (инкрементальный)
|
||||
|
||||
Скрипт `scripts/deploy-vps.mjs` загружает содержимое `public/` на VPS, передавая только изменённые файлы.
|
||||
|
||||
## Принцип работы
|
||||
|
||||
1. **Манифест** (`.deploy-manifest.json`) хранит `mtime` и `size` каждого файла с прошлого деплоя.
|
||||
2. При запуске скрипт сканирует `public/`, сравнивает с манифестом:
|
||||
- Файлы с изменившимся `mtime` или `size` — загружаются.
|
||||
- Файлы, которых нет локально, но есть в манифесте — удаляются с сервера.
|
||||
3. Изменённые файлы пакуются в `tar` и передаются **одним SSH-соединением** (без сжатия, чтобы не тратить CPU на уже сжатые медиа).
|
||||
4. Манифест обновляется после успешного деплоя.
|
||||
|
||||
При первом запуске (манифест пуст) заливаются все файлы — ~3 минуты на ~400 файлов. Повторный деплой (1–10 изменившихся файлов) — 2–5 секунд.
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
npm run deploy:vps
|
||||
# или напрямую
|
||||
node scripts/deploy-vps.mjs [sourceDir]
|
||||
```
|
||||
|
||||
По умолчанию `sourceDir = public`.
|
||||
|
||||
## Рецепты
|
||||
|
||||
### Только в Coolify
|
||||
|
||||
Запрос пользователя: «задеплой в Coolify», «задеплой на VPS».
|
||||
|
||||
```bash
|
||||
npm run deploy:vps
|
||||
```
|
||||
|
||||
Нужны разрешения: **all** (SSH-ключ `~/.ssh/beget`, доступ к файлам `public/`).
|
||||
|
||||
### Везде (VPS + GitVerse)
|
||||
|
||||
```bash
|
||||
npm run deploy
|
||||
```
|
||||
|
||||
Выполняет `deploy:vps`, затем `sync-gitverse`.
|
||||
|
||||
## Конфигурация
|
||||
|
||||
- **SSH-ключ:** `~/.ssh/beget`
|
||||
- **Хост:** `root@155.212.186.39`
|
||||
- **Целевая папка:** `/data/static-site`
|
||||
- **Манифест:** `.deploy-manifest.json` в корне проекта (не коммитится)
|
||||
|
||||
## Сброс манифеста
|
||||
|
||||
Если нужно залить всё с нуля — удалить `.deploy-manifest.json`:
|
||||
|
||||
```bash
|
||||
rm .deploy-manifest.json
|
||||
```
|
||||
Reference in new issue
Block a user