Closed
Description
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
- note: this means
15
&17
won't be supported byv9
(this is becausenode
does not support them anymore - ref. https://nodejs.org/en/about/releases/)
- note: this means
- Do not error but warn on undocumented
node
versions
Exit Criteria
- Update engines in
cli
- Update engines in
template-oss
- Update dependencies blocked by old engines
- Update/refactor
knownBroken
innpm/cli
(ref../lib/cli.js
)
Notes & References
Proposed major version support for npm 9.
12
- npm 8:
^12.13.0
- npm 9: support for node 12 will be dropped
- npm 8:
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.
- npm 8:
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
andnode-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.
- npm 8:
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.
- npm 8: technically supported via
- 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 aSUPPORT.md
file in all relevant repos.
- npm 8: