Yuriy-Svetlov / compress-images

Minify size your images. Image compression with extension: jpg/jpeg, svg, png, gif. NodeJs
https://www.npmjs.com/package/compress-images
MIT License
596 stars 77 forks source link

Compatibility with pngquant-bin v7 #65

Open VadimDez opened 2 years ago

VadimDez commented 2 years ago

Found an issue, since version 7 of pngquant-bin they're using native ESM, using pngquant-bin v7+ will fail with:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: .../node_modules/pngquant-bin/index.js
require() of ES modules is not supported.
require() of .../node_modules/pngquant-bin/index.js from .../node_modules/compress-images/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename .../node_modules/pngquant-bin/index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from .../node_modules/pngquant-bin/package.json.
mathieutu commented 2 years ago

Same for gifsicle!

Yuriy-Svetlov commented 2 years ago

@mathieutu

Same for gifsicle!

Temporary solution:

npm install pngquant-bin@6.0.1 --save npm install gifsicle@5.2.1 --save

mathieutu commented 2 years ago

Yep, this is what I've done. 😉

Yuriy-Svetlov commented 2 years ago

@mathieutu

Temporary solution-2:

You can also download:

https://pngquant.org/

Binary for macOS (v2.17.0) Binary for Windows Package for Debian Various Linux packages

and replace in node_modules\pngquant-bin\vendor\pngquant.exe for Windows as the example.

beatrizsmerino commented 9 months ago

I can't upgrade these packages (gifsicle, pngquant-bin) to these versions, because they use ESModules and the compress-images package is still using CommonJS

Captura de pantalla 2024-01-07 a las 23 38 14 Captura de pantalla 2024-01-07 a las 23 41 03 Captura de pantalla 2024-01-07 a las 23 42 31 Captura de pantalla 2024-01-07 a las 23 45 45