Build MOBIPINTECH company website
This commit is contained in:
21
scripts/generate-capability-thumbnails.mjs
Normal file
21
scripts/generate-capability-thumbnails.mjs
Normal file
@@ -0,0 +1,21 @@
|
||||
// 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).`);
|
||||
Reference in New Issue
Block a user