Skip to content

BREAKING CHANGE(engines): engines support for npm 9.0.0 #519

Closed
@lukekarrys

Description

@lukekarrys

Summary

We want to ensure that the CLI's engines field is as up-to-date as possible & reflects a realistic set of node versions that it will work on & that our team cares to "support".

Details

  • Use the engines spec: ^12.22.0 || ^14.17.0 || >=16.0.0
  • Do not error but warn on undocumented node versions

Exit Criteria


Notes & References

Proposed major version support for npm 9.

  • 12
    • npm 8: ^12.13.0
    • npm 9: support for node 12 will be dropped
  • 14
    • npm 8: ^14.15.0
    • npm 9: ^14.15.0
    • I don't see a reason to change the supported versions of node 14. I couldn't find any features we would be unable to use by changing node 14 versions.
  • 16:
    • npm 8: >=16
    • npm 9: ^16.13.0
    • In the past we've backstopped major version support at the version where it entered Active LTS support, which in this case is 16.13.0. This made sense for us but caused problems if other parts of the ecosystem settled on a different minor/patch version for LTS. For example, npm@8 used ^12.13.0 and node-gyp@9 used ^12.22.0 which made upgrading difficult. We should collaborate with other packages to see what version of node 16 we should support.
  • 18:
    • npm 8: technically supported via >=16
    • npm 9: >=18
    • This drops support for node 17 but allows us to support node 19 as it is developed.
  • Odd numbered major versions:
    • npm 8: ^17 and ^19 supported via >=16
    • npm 9: All non-EOL odd versions with the caveat that dropping support for EOL odd versions is NOT a breaking change
    • We want to support all non-EOL odd versions, but dropping support for them (eg when going from >=16 to >=18) is a breaking change in our current support contract. The proposed solution above would be documented in a SUPPORT.md file in all relevant repos.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions