Files
Binding-Fignyaac/build.ts
T
mayatnikovandClaude Opus 4.8 e2cb1ff855 feat(assets): загрузка PNG из src/assets с процедурным фолбэком
- assets.ts: текстуры грузятся из src/assets/<key>.png; если файла нет —
  откат на процедурный рисунок (игра не ломается, сборка не зависит от наличия PNG).
- dev.ts: отдаёт /assets/* прямо из src/assets/ (положил PNG → сразу подхватился).
- build.ts: копирует src/assets → dist/assets.
- Имена ключей = именам файлов из docs/ASSET_BRIEF.md (player-ranged.png и т.д.).
- Добавлен src/assets/tear.png как рабочий пример из дизайна.

Чтобы подключить полный арт: положить 21 PNG из проекта Claude Design в src/assets/.
Бинарные ассеты переносятся файлами (не через модель — это триггерит usage-policy).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 16:00:35 +03:00

33 lines
1.0 KiB
TypeScript

/**
* Продакшн-сборка: минифицированный бандл src/main.ts → dist/main.js
* плюс копия index.html. Открывай dist/index.html.
*/
import { build } from 'bun';
import { cp, mkdir } from 'node:fs/promises';
const result = await build({
entrypoints: ['./src/main.ts'],
outdir: './dist',
target: 'browser',
minify: true,
sourcemap: 'external',
});
if (!result.success) {
console.error('Сборка упала:');
for (const log of result.logs) console.error(log);
process.exit(1);
}
await Bun.write('./dist/index.html', await Bun.file('./index.html').text());
// Копируем картинки в dist/assets (если папка есть).
try {
await mkdir('./dist/assets', { recursive: true });
await cp('./src/assets', './dist/assets', { recursive: true });
} catch {
// src/assets ещё нет — не страшно, рендер откатится на процедурную графику.
}
console.log('Сборка готова → dist/ (открой dist/index.html)');