lib/core/builder.js
async function createThumbnails (target, images) {
  for (const x of images) {
    const imagePath = path.join(target, x)
    const thumbPath = path.join(target, `${x}.thumb.jpg`)

    try {
      // Background and flatten are for transparent PNGs/Gifs.
      // We force a white background here.

      await sharp(imagePath)
        .resize(450)
        .background({r: 255, g: 255, b: 255, alpha: 1})
        .flatten()
        .jpeg()
        .toFile(thumbPath)
    } catch (e) {
      const msg = chalk.dim(`(${e.message})`)
      console.warn(`The '${chalk.bold(x)}' thumbnail has not been generated. ${msg}`)
    }
  }
}
async function createThumbnails (target, images) {
  for (const x of images) {
    const imagePath = path.join(target, x)
    const thumbPath = path.join(target, `${x}.thumb.jpg`)

    try {
      // Background and flatten are for transparent PNGs/Gifs.
      // We force a white background here.

      await sharp(imagePath)
        .resize(450)
        .background({r: 255, g: 255, b: 255, alpha: 1})
        .flatten()
        .jpeg()
        .toFile(thumbPath)
    } catch (e) {
      const msg = chalk.dim(`(${e.message})`)
      console.warn(`The '${chalk.bold(x)}' thumbnail has not been generated. ${msg}`)
    }
  }
}
Create thumbnails. For each provided images, generate a low-res jpg thumbnail. Even for gif.  We don't check if the format of the images is valid, since the check is already done when constructing the images object.