import fs from "fs" import path from "path" import sharp from "sharp" const processBlogImages = async () => { const srcDir = "posts/img" const destDir = "public/posts/img" if (!fs.existsSync(srcDir)) { console.error("⚠️ No posts/img directory found") return } if (!fs.existsSync(destDir)) { fs.mkdirSync(destDir, { recursive: true }) } const files = fs.readdirSync(srcDir) const imageExtensions = [ ".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg", ".webm", ] for (const file of files) { const ext = path.extname(file).toLowerCase() if (imageExtensions.includes(ext)) { const inputPath = path.join(srcDir, file) // Define inputPath and outputPath const outputPath = path.join(destDir, file) if (ext === ".svg" || ext === ".webm") { fs.copyFileSync(inputPath, outputPath) console.info(`📸 Copied ${file}`) } else { await sharp(inputPath) .resize(1200, 800, { fit: "inside", withoutEnlargement: true, }) .jpeg({ quality: 85, progressive: true }) .png({ compressionLevel: 8 }) .webp({ quality: 85 }) .toFile(outputPath) console.info(`🖼️ Processed ${file}`) } } } console.log(`✅ Processed images from ${srcDir}`) } export { processBlogImages }