Show HN: Turn NPM installs into a Space Invaders style game in your terminal
npmjs.com
npmjs.com
To give some perspective, I'm dealing with systems that install npm packages at scale. NPM3 has had way too many show stopping bugs for us. The delays in installation time compound when dealing with thousands of packages, pretty much causing package installation to fail ( take forever ).
npm set progress=false
it speeds up installation time.
I am also approaching an alternative solution, to put dev deps in another package.json, then do something like npm install src/dev
where src/dev is a folder that contains a package.json with dev deps only when you are developing.BTW, "npm install --production" installs all dependencies but not devDependencies (which you can get by doing "npm install --save-dev <package>"). That way you can separate dev and prod dependencies within the same package.json file.
Feels a little backwards that you specify dev on module install but prod on app install. Maybe --production being the default and --dev being an option makes more sense, but that would be one hell of a breaking change.
Which is not to say you are incorrect (as often disabling logging to the console can speed up operations), but for the most part the bug has been fixed.
[1] https://github.com/npm/npm/releases/tag/v3.7.0
[2] https://twitter.com/gavinjoyce/status/691773956144119808
@iarna got to the root cause (instead of simply throttling it as I had been doing) but it has not yet been merged into npmlog. [2]
1. https://github.com/npm/npm/issues/11283#issuecomment-1757522...
"This has been patched to eliminate that churn, and our testing shows the progress bar as being eliminated as a source of slow down."
Apologies for being misleading.
Unfortunately I've not had much luck getting pnpm or ied running on Windows due to the symlinking stuff (though the installation portion is super quick), so hopefully the speed improvements here can help lessen the blow a bit.
I was under the impression this was generally considered bad practice, so it seemed weird seeing it done by the package manager itself :)
Unfortunately, as detailed in a few npm3 threads, npm3 performance may forever be quite bad, due to a few ill-conceived features in npm's infancy.
Due to shrinkwraps and bundleDependencies, it's impossible for npm to know the full dependency tree until it has untarred every intermediate dependency [1]. In the future, it may be possible for a smarter server to cache this data and serve the full tree as part of the metadata, but that is a ways away.
There are some low-hanging fruit still in npm; for instance, the npm registry still doesn't gzip metadata for some unknown reason. Doing so could save as much as 80% on some larger metadata json, such as npm/npm itself [2].
1. https://github.com/npm/npm/issues/8826#issuecomment-15511591...
That led me to trying pnpm [2] which, on the plus side can install my dependencies (and fast!), but on the other hand seems to do so in a way that my grunt tasks no longer work (complaining about missing sub-dependencies).
To be quite frank, I am not an expert in npm's underlying architecture. But this post has inspired me to actually do some research. The fact that there is an alternate package manager shows there is a huge problem.
Since the introduction of nodejs and NPM, JavaScript developers have been on a ridiculous NIH-fuelled frenzy to recreate everything that ever existed, using as many dependencies (and sub-dependencies) as humanly possible to do so, while also actively choosing to not solve problems that they come across, and instead implementing ridiculous work arounds or replacing/rewriting entire components or apps, rather than working out they were missing a config option, etc.
I am not at all surprised that the nodejs/npm community's response to NPM being such a pig, is to put lipstick on that pig, and try to make it look prettier, while doing nothing about it shitting all over the couch and proceeding to lay in said shit.
I recently purchased a Korg Minilogue analog synthesizer. Because of the instability of analog oscillators it has to go through a tuning procedure when it's first powered on (which can take around 20sec). They included a little game of breakout to help pass the time, though :)
Something like a java/c/etc compile on a large project is an unavoidable delay. And yet those tools don't offer to jingle some keys for you to make you feel like its quicker. They just do what they can to make the process as quick as possible.
Installation of packages that don't require compilation (e.g. decompressing files, moving them and possibly running some simple tasks) is not unavoidably slow. NPM is just a terrible package manager, and the community is in some kind of munchausen situation.
> Have you tried just mashing the spacebar?
Gave me a good chuckle XD
This cool "arms race" cannot go unanswered, it demands Ruby gem-install-pac-man. ;)
ᗧ ・・・・️・・・・ and: ᗣᗢᗤ┏┗┓┛┣┫┻╋┳┃━
Also: Alien monster https://duckduckgo.com/?q=U%2B1F47EThis would've been perfect.