Skip to content

npm sucks ! - #286

Closed
llaumgui wants to merge 2 commits into
bndct-devops:mainfrom
llaumgui:feature/pnpm
Closed

llaumgui wants to merge 2 commits into
bndct-devops:mainfrom
llaumgui:feature/pnpm

Conversation

@llaumgui

@llaumgui llaumgui commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

npm sucks:

  • npm is slow,
  • npm is old,
  • npm is not sexy,

;-)

Changes

Move from npm to pnpm and build with matrix (22/24/26) on Github Actions.

Screenshots

N/A

Checklist

  • pytest passes
  • pnpm run build clean (frontend typecheck)
  • Manually tested the happy path
  • Docs updated (if user-facing)
  • In-app "Learn more →" link points to the new/updated docs (if docs added)
  • Screenshots added (if UI change)
  • No secrets or credentials committed

Notes

N/A

@bndct-devops

Copy link
Copy Markdown
Owner

First of all, sorry for the late answer - got work throughout the week and this is a big PR, took some time to look through it and test it. I'm going to pass on the pnpm switch, but I'd like to take the react-resizable change on its own, that's a real fix.

What I hit testing it:

  • node:lts-alpine is Node 26 now, which doesn't ship corepack anymore, so the Docker build fails at corepack enable. CI didn't catch it because the image job only runs on main.
  • minimumReleaseAge: 0 switches off the release cooldown pnpm 11 just added. Was there a reason?
  • The Node matrix triples e2e time, and the 24 run hung for almost 3h downloading Node.

Bigger picture: it's one package with 44 deps and installs are already fast, so this is mostly a preference change that touches every contributor's setup. Not against pnpm, just don't see what it improves right now. Happy to revisit if that changes.

Want to split the react-resizable line into its own PR? Or I cherry-pick it, whichever you prefer.

@llaumgui

llaumgui commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Hi,

no pb for the time.

node:lts-alpine is Node 26 now, which doesn't ship corepack anymore, so the Docker build fails at corepack enable. CI didn't catch it because the image job only runs on main.

I check.

minimumReleaseAge: 0

It bypasses the delay for newly released dependencies. In my view, when a zero-day issue occurs, you need to deploy the fix right away without waiting out a cooldown.

The Node matrix triples e2e time, and the 24 run hung for almost 3h downloading Node.

Not for me. Perhaps a GH issue?

Bigger picture: it's one package with 44 deps and installs are already fast, so this is mostly a preference change that touches every contributor's setup. Not against pnpm, just don't see what it improves right now. Happy to revisit if that changes.

pnpm is more efficiant add quick than npm. Also, do a big update of all dependencies is very simple: pnpm update --latest.

pnpm is more efficient and faster than npm. Also, running a major update on all dependencies is really simple: pnpm update --latest. I'd like to propose (with PR) switching from pip/pip-tools to uv, or do you think that's too big of a change for now?

@llaumgui

llaumgui commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor Author

@bndct-devops you would like a PR just with npm add react-resizable ?

The Node matrix triples e2e time, and the 24 run hung for almost 3h downloading Node.

Have you try to use vitetest ? I use on my personnal project (https://github.com/llaumgui/seedboxsync) and I have better time than e2e or jest. On a professionnal project I have migrate from e2E to vitest with IA. You remove chrome dependency and win a lot of processing time.

@bndct-devops

Copy link
Copy Markdown
Owner

@llaumgui Yes please, a PR with just npm add react-resizable and I'll merge it straight away.

On Vitest: they're not interchangeable here. The e2e specs boot the real backend with seeded data and click through the UI, which is what gives us regression coverage for things like the library cleanup flow from #165. Vitest is for unit tests, and dropping the browser would drop what those tests check. The e2e step itself is about 2.5 minutes, the 3h was the Node download, not the tests.

One note on the corepack fix in case you reuse it elsewhere: NODE_ENV=production before pnpm install skips devDependencies, and vite and typescript live there, so the build step won't have them. I'd also avoid piping an installer from the web in a Dockerfile.

Closing this one, thanks again for the work on it.

@llaumgui
llaumgui deleted the feature/pnpm branch November 1, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants