@mapbox/appropriate-images
Advanced tools
Comparing version 4.1.0-beta.6 to 4.1.0-beta.7
'use strict'; | ||
const _ = require('lodash'); | ||
const fs = require('fs').promises; | ||
const pify = require('pify'); | ||
const fs = require('fs'); | ||
const imagemin = require('imagemin'); | ||
@@ -9,3 +10,6 @@ const imageminPngquant = require('imagemin-pngquant'); | ||
const imageminWebp = require('imagemin-webp'); | ||
const pLimit = require('p-limit'); | ||
const limit = pLimit(1); | ||
/** | ||
@@ -18,13 +22,10 @@ * Given output from imagemin, write image files. | ||
*/ | ||
async function writeOptimizedImages(imageData) { | ||
let destinationPaths = []; | ||
for (const item of imageData) { | ||
try { | ||
await fs.writeFile(item.destinationPath, item.data); | ||
destinationPaths.push(item.destinationPath); | ||
} catch (error) { | ||
throw new Error(error); | ||
} | ||
} | ||
return destinationPaths; | ||
function writeOptimizedImages(imageData) { | ||
return Promise.all( | ||
imageData.map((item) => | ||
pify(fs.writeFile)(item.destinationPath, item.data).then( | ||
() => item.destinationPath | ||
) | ||
) | ||
); | ||
} | ||
@@ -44,36 +45,25 @@ | ||
*/ | ||
module.exports = async (imageFilenames, options) => { | ||
module.exports = (imageFilenames, options) => { | ||
// These are two separate processes because otherwise the webp plugin | ||
// overrides the others, somehow. | ||
let filenameArrays = []; | ||
try { | ||
const regularOptimizations = await imagemin(imageFilenames, { | ||
destination: options.outputDirectory, | ||
plugins: [ | ||
imageminPngquant(options.pngquant), | ||
imageminMozjpeg(options.mozjpeg) | ||
] | ||
}); | ||
filenameArrays = [ | ||
...filenameArrays, | ||
...(await writeOptimizedImages(regularOptimizations)) | ||
]; | ||
} catch (err) { | ||
throw new Error(err); | ||
} | ||
try { | ||
const webpOptimizations = await imagemin(imageFilenames, { | ||
destination: options.outputDirectory, | ||
plugins: [imageminWebp(options.webp)] | ||
}); | ||
filenameArrays = [ | ||
...filenameArrays, | ||
...(await writeOptimizedImages(webpOptimizations)) | ||
]; | ||
} catch (err) { | ||
throw new Error(err); | ||
} | ||
const regularOptimizations = imagemin(imageFilenames, { | ||
destination: options.outputDirectory, | ||
plugins: [ | ||
imageminPngquant(options.pngquant), | ||
imageminMozjpeg(options.mozjpeg) | ||
] | ||
}).then(writeOptimizedImages); | ||
return _.flatten(filenameArrays); | ||
const webpOptimizations = imagemin(imageFilenames, { | ||
destination: options.outputDirectory, | ||
plugins: [imageminWebp(options.webp)] | ||
}).then(writeOptimizedImages); | ||
const input = [ | ||
limit(() => regularOptimizations), | ||
limit(() => webpOptimizations) | ||
]; | ||
return Promise.all(input).then((filenameArrays) => _.flatten(filenameArrays)); | ||
}; |
{ | ||
"name": "@mapbox/appropriate-images", | ||
"version": "4.1.0-beta.6", | ||
"version": "4.1.0-beta.7", | ||
"description": "Get appropriately sized images into your website.", | ||
@@ -45,2 +45,3 @@ "main": "index.js", | ||
"p-finally": "^2.0.1", | ||
"p-limit": "^3.1.0", | ||
"pify": "^5.0.0", | ||
@@ -47,0 +48,0 @@ "sharp": "^0.27.1", |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
0
2083170
15
823
+ Addedp-limit@^3.1.0
+ Addedp-limit@3.1.0(transitive)
+ Addedyocto-queue@0.1.0(transitive)