Files
mobipin.noname.company/scripts/generate-capability-thumbnails.mjs

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).`);