Skip to content

Migrate to (bundled) npm 8 or newer #61

@DeeDeeG

Description

@DeeDeeG

Have you checked for existing feature requests?

  • Completed

Summary

Switching to (bundled) npm 8 or newer in apm.

My first plan would be to ask the author of atom-community/apm#123 if it is okay to use their implementation at this repo. We can then verify whether it "just works" at that point, or needs more work for successful integration of newer npm into ppm.

What benefits does this feature provide?

Newer npm brings newer node-gyp.

Newer npm should be much faster than npm 6.

Allegedly, but I think in my personal use I have in fact seen it to be faster.

Newer npm will be supported further into the future.

In summary: Node 14 has npm 6. Node 16 has npm 8. Node 18 has npm 9.

Node 14 support ends 30 April, which is soon. We want to be on something newer for longer support.

Support timeline for various npm versions

See NodeJS support timeline, that's what most of this is based off of: https://github.com/nodejs/release#release-schedule


Note: Most of the biggest churn and breaking changes happened in npm 7, if I recall correctly / in my subjective recollection.

This was around the time GitHub acquired npm (!), and they (in my subjective opinion), went though a bit of a "move fast, break things" phase. They technically haven't stopped doing the "moving fast" part, I really wish they would focus more on testing changes with the ecosystem, but that is my bias as an end-user-testing-focused contributor to open source projects that apparently use some of npm's most obscure (and so least well preserved) features and quirks. It's just that many of their biggest ideas for "breakin' stuff" got expressed into code by the time npm 7.x was done, and so once we get over that hurdle of getting "somewhere past npm 7", npm 8 and 9 should hopefully be relatively somewhat smoother.


Any alternatives?

Alternatives are to stay on an unsupported npm version (npm 6)...

Which I prefer not to do long-term, so why not get out ahead of the (semi-official unofficial) EOL of npm 6?

Other examples:

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions