22 lines
1.1 KiB
JavaScript
22 lines
1.1 KiB
JavaScript
// 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).`);
|