forked from wernerglinka/metalsmith-bare-bones-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
image-resize.js
32 lines (30 loc) · 1.05 KB
/
image-resize.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const sharp = require("sharp");
const fs = require("fs");
const path = require("path");
const glob = require("glob");
const dir = process.argv[2];
const dist = process.argv[3];
const size = parseInt(process.argv[4]);
const suffix = process.argv[5] || "";
/**
* used in gulp for resizing images to assets build dir
*
* @param {string} dir source dir
* @param {string} dist destination dir. assets dir
* @param {number} size image cropping size in px
* @param {string} suffix addition to image name
*/
glob(dir+'/**/*.{jpg,png}', function (err, files) {
if (err != null) { throw err; }
fs.mkdirSync(dist, { recursive: true });
files.forEach(function(inputFile) {
sharp(inputFile)
.resize(size, size, {fit: "inside"})
.webp({quality: 77, force: true })
.toFile(path.join(dist, path.basename(inputFile, path.extname(inputFile))+suffix+".webp"), (err, info) => {
if(err === null){
console.log("successfully compressed"+inputFile+" to "+info.format+" in size "+info.width+"px");
} else { throw err }
});
});
});