Skip if file already exists

This commit is contained in:
Gal 2024-02-13 22:23:39 +01:00
parent 8a1964be84
commit b4fb95ffe6
Signed by: gal
GPG Key ID: F035BC65003BC00B
1 changed files with 15 additions and 4 deletions

View File

@ -18,22 +18,33 @@ import { trace } from "./util/trace"
import { options } from "./util/sourcemap" import { options } from "./util/sourcemap"
import { Mutex } from "async-mutex" import { Mutex } from "async-mutex"
import sharp from "sharp" import sharp from "sharp"
import { promises as fs } from 'fs';
async function compressImages(inputDir, outputDir) { async function compressImages(inputDir, outputDir) {
const files = await glob(`**/*.{jpg,png}`, inputDir); const files = await glob(`**/*.{jpg,png}`, inputDir);
console.log(`Found ${files.length} files:`); console.log(`Found ${files.length} files:`);
// Use sharp for image compression
await Promise.all( await Promise.all(
files.map(async (file) => { files.map(async (file) => {
const inputFilePath = path.join(inputDir, file); const inputFilePath = path.join(inputDir, file);
const relativeOutputPath = path.relative(inputDir, inputFilePath); const relativeOutputPath = path.relative(inputDir, inputFilePath);
const outputWebpPath = path.join(outputDir, relativeOutputPath.replace(/\.(jpg|png)$/, '.webp')); const outputWebpPath = path.join(outputDir, relativeOutputPath.replace(/\.(jpg|png)$/, '.webp'));
await sharp(inputFilePath) try {
.webp({ quality: 75 }) // Check if the output WebP file already exists
.toFile(outputWebpPath); await fs.access(outputWebpPath);
// File exists, so skip compression
console.log(`Skipped: ${inputFilePath}`);
} catch (error) {
// File doesn't exist, proceed with compression
await sharp(inputFilePath)
.webp({ quality: 75 })
.toFile(outputWebpPath);
console.log(`Compressed: ${inputFilePath}`);
}
}) })
); );