- cross-posted to:
- programmerhumor@lemmy.ml
- cross-posted to:
- programmerhumor@lemmy.ml
And this is why tree shaking exists.
What is that?
If you import 1% of your module code, you only compile the actual used code. Tree shaking is removing dead code paths that aren’t used.
Very true.
Python feels like that sometimes too. Except much more standard library which is much better than node modules.
Feels like a lot of “not inventing the wheel” - which is good? There are plenty of good wheels out there.
The problem is “I need function, library with 1000 functions has function, include.” Library’s 823rd function turns out to have a vulnerability.
“Yes, I’d like a wheel. I don’t want to invent it. Why, of course, give me the full package of wheel, axis, rotor, engine, fuel tank, windshield, mirrors, tire, front panel, brakes. This wheel will be great for me manually spinning cotton!”
I used to struggle with this, until I realized what’s really going on. To do conventional web development, you have to download a zillion node modules so you can:
- Build one or more “transpilers” (e.g. Typescript, Sass support, JSX)
- Build linters and other SAST/DAST tooling
- Build packaging tools, to bundle, tree-shake, and minify your code
- Use shims/glue to hold all that together
- Use libraries that support the end product (e.g. React)
- Furnish multiple versions of dependencies in order for each tool to have its own (stable) graph
All this dwarfs any code you’re going to write by multiple orders of magnitude. I once had a node_modules tree that clocked in at over 1.5GB of sourcecode. What I was writing would have fit on a floppy-disk.
That said, it’s kind of insane. The problem is that there’s no binary releases, nor fully-vendored/bundled packages. The entire toolchain source, except nodejs and npm, is downloaded in its entirety, on every such project you run.
In contrast, if you made C++ or Rust developers rebuild their entire toolchain from source on every project, they’d riot. Or, they would re-invent binary releases that weekend.
Boy do i have news concerning rust :p