jantimon / favicons-webpack-plugin

Let webpack generate all your favicons and icons for you
MIT License
1.2k stars 210 forks source link

bumping the engines.node version in v6.0.1 was a breaking change #355

Closed zburke closed 1 year ago

zburke commented 1 year ago

Current behaviour 💣

353 introduced breaking changes by raising the engines.node version from >= 14 to >= 16, and this change was published in a patch release (v6.0.1) instead of a major release (v7.0.0). This means anybody running node < v16 with a ^6.0.0 or ~6.0.0 dependency on favicons-webpack-plugin will no longer be able to build their module, even without making any code changes whatsoever.

Expected behaviour ☀️

Patch releases do not contain breaking changes, i.e. v6.0.1 should run in every environment where v6.0.0 runs.

Reproduction Example 👾

$ node --version
v14.21.3

$ yarn add favicons-webpack-plugin@6.0.0 
yarn add v1.22.19
warning package.json: No license field
warning favicons-webpack-plugin-demo@1.0.0: No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > html-webpack-plugin@5.0.0" has incorrect peer dependency "webpack@^5.20.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has incorrect peer dependency "webpack@^4.0.0".
warning "favicons-webpack-plugin > html-webpack-plugin@5.5.3" has incorrect peer dependency "webpack@^5.20.0".
[4/4] 🔨  Building fresh packages...

warning favicons-webpack-plugin-demo@1.0.0: No license field
success Saved 0 new dependencies.
✨  Done in 1.49s.

$ yarn add favicons-webpack-plugin@6.0.1 
yarn add v1.22.19
warning package.json: No license field
warning favicons-webpack-plugin-demo@1.0.0: No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
error favicons-webpack-plugin@6.0.1: The engine "node" is incompatible with this module. Expected version ">=16". Got "14.21.3"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

$ echo $?
1

Environment 🖥

Node.js v14.21.3 darwin 22.6.0

andy128k commented 1 year ago

Node.js v14 reached end-of-life 2023-04-30.

zburke commented 1 year ago

@andy128k, I understand that Node.js v14 reached EOL a while ago (and that Node.js v16 will reach EOL in a few weeks). It's great to see that you are paying attention to that and keeping your dependencies current. Dropping support for Node.js v14 is totally TOTALLY fine, but it should have been done in a major release. Raising the minimum supported version of engines.node is analogous to raising the minimum supported version of a peer dependency; this is a breaking change.

v6.0.1 should run in all the same environments where v6.0.0 runs, but it doesn't. That means v6.0.1 wasn't actually a patch release, it was a mis-labeled major release.