// macOS에서 실행: node scripts/generate-capability-thumbnails.mjs // 목록용 이미지 축소본만 생성하며 원본과 프로젝트 데이터는 변경하지 않음. import fs from "node:fs"; import path from "node:path"; import vm from "node:vm"; import { execFileSync } from "node:child_process"; import { fileURLToPath } from "node:url"; const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); const context = { window: {} }; vm.runInNewContext(fs.readFileSync(path.join(root, "js/capabilities-data.js"), "utf8"), context); const images = new Set(context.window.CAPABILITY_PROJECTS.flatMap((item) => [item.image, item.objectImage, item.objectImageSecondary].filter(Boolean))); let bytes = 0; for (const source of images) { const target = path.join(root, source.replace("assets/images/", "assets/thumbnails/")); fs.mkdirSync(path.dirname(target), { recursive: true }); execFileSync("sips", ["-Z", "320", path.join(root, source), "--out", target], { stdio: "pipe" }); bytes += fs.statSync(target).size; } console.log(`Generated ${images.size} thumbnails (${Math.round(bytes / 1024)} KB total).`);