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.
Summary
We want to ensure that the CLI's
enginesfield is as up-to-date as possible & reflects a realistic set ofnodeversions that it will work on & that our team cares to "support".Details
enginesspec:^12.22.0 || ^14.17.0 || >=16.0.015&17won't be supported byv9(this is becausenodedoes not support them anymore - ref. https://nodejs.org/en/about/releases/)nodeversionsExit Criteria
clitemplate-ossknownBrokeninnpm/cli(ref../lib/cli.js)Notes & References
Proposed major version support for npm 9.
12^12.13.014^14.15.0^14.15.016:>=16^16.13.016.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@8used^12.13.0andnode-gyp@9used^12.22.0which made upgrading difficult. We should collaborate with other packages to see what version of node 16 we should support.18:>=16>=18^17and^19supported via>=16>=16to>=18) is a breaking change in our current support contract. The proposed solution above would be documented in aSUPPORT.mdfile in all relevant repos.