How is this a real, “production-ready” ecosystem?
Run the “installer” (sus already, piping curl to bash)
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
...
$ nvm install --lts
And then, of course, I need pnpm because npm is “slow”, so there’s the bit where it’s recommended I use npm to install pnpm:
$ npm install -g pnpm
added 1 package in 1s
1 package is looking for funding
run `npm fund` for details
npm notice
npm notice New minor version of npm available! 11.13.0 -> 11.16.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.16.0
npm notice To update run: npm install -g npm@11.16.0
npm notice
I mean, why wouldn’t a freshly installed nvm-managed “lts” node instance offer an immediate notice that there’s a minor version update available.
Then I get to do the pnpm install which takes so long, I use a debug output modification to replace the “progress bar” with a JSON status update feed, so that I have a little more confidence that it’s actually doing something rather than just hanging indefinitely while it installs 2553 packages.
Completing the pnpm install actually takes several rounds of trial-and-error because what works with pnpm v10 changed syntax with pnpm v11, and then following those instructions shows that the v11 syntax changed again (at some point) and now the file you need to edit is different, so I update that…
Eventually, over 3 hours later, and restarting the install process several times after it failed, I have
$ du -sh node_modules/
2.4G node_modules/
This includes many packages that alert that they are no longer supported, I would migrate to the recommended package alternatives, but that would trigger endless cascading dependency changes.
So, anyway, I like to host a static file version of GitHub - CorentinTh/it-tools: Collection of handy online tools for developers, with great UX. · GitHub on my internal network, but am working on deploying the forked version, GitHub - sharevb/it-tools: My additions (and of others) to it-tools! (Collection of handy online tools for developers, with great UX. ) · GitHub instead.
Compiling the static file version saves me the hassle of having a docker container that insists on having node running in a bloated docker image with 2.4G of packages.
The “coding” I find myself doing here is trying to match the correct versions of frameworks and packages in this awful ecosystem with something that has a label of “lts”, and desperately hoping that the “lts” means “longer than 6 months”.