You typical Node project
-
And this is why tree shaking exists.
It's great when it works, yeah.
-
Rust as well. Seems to just be a modern language thing.
wrote last edited by [email protected]At least Rust compiles down to what is used. I don't know if js has any of that, but at least with rust the final program doesn't ship tons of bloat.
-
At least Rust compiles down to what is used. I don't know if js has any of that, but at least with rust the final program doesn't ship tons of bloat.
Yes and no, the linker does nicely trim a lot of the fat, but rust binaries are still pretty chonky. Its good chonky (debug etc), and static compile doesnt help, but they are quite fat.
Also doesnt help compile times that you have to build all this extra stuff, only to throw most of it away.
-
Why write code, when someone else already wrote it?
Why not import all code ever created by human kind just in case we might need some of it.
-
This post did not contain any content.
Wait until OP finds out about interpreters and compilers.
-
Feels like a lot of “not inventing the wheel” - which is good? There are plenty of good wheels out there.
"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!"
-
Dead code elimination but with a different name for some reason
Because we're monkeys
-
Be the change you want to see in the world, people. Don't use any Node (or Rust or Python or Java or whatever) modules that have more dependencies than they absolutely, positively, 100%, for real have to. It's really not that hard. It doesn't have to be this way.
cries in legacy systems
-
Except in the picture on the left, someone's actually reading it.
Something's gone wrong if you're looking in the node_modules folder.
Sometimes you gotta monkey patch that library because they won’t accept your pull requests to fix that bug.
-
Why not import all code ever created by human kind just in case we might need some of it.
I want to build a kick scooter. For that I need some wheels. So I import the well-known semi-truck framework. From that framework I take some huge wheels. They are too large and too many, but I guess I can make do with them.
But I need to attach the wheels to one another, so I import the bridge-building-library, because they have steel bars in there.
Lastly, to attach all of that together I import the NASA space ship framework because there's a hand welder in there, that's been deprecated years ago, but it's still rotting away in there because some important products still require the hand welder class for some entirely unrelated use cases.
-
This post did not contain any content.
Also C programmers using glibc
-
I should check Go's pkg folder...
Rust is like nodejs
-
Sometimes you gotta monkey patch that library because they won’t accept your pull requests to fix that bug.
At least you can monkeypatch it.
-
This post did not contain any content.wrote last edited by [email protected]
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.
-
Or bugs that you only work out much later on.
Or someone deletes the axle repo and the wheel flies off.
-
Feels like a lot of “not inventing the wheel” - which is good? There are plenty of good wheels out there.
You say that, but I've watched the JS community move from one framework and tool suite to the next quite rapidly. By my recollection, I've seen a wholesale change in popular tooling at least four times in the last decade. Granted, that's not every developer's trajectory through all this, but (IMO) that's still a lot.
-
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.
And if you made JavaScript developers use compatible versions for everything they'd riot. And also every build would fail for, like, at least a week
-
Why not import all code ever created by human kind just in case we might need some of it.
...and then we can grind all the code ever created by human kind into a fine paste, and write a clever algorithm to regurgitate it as a squishy code slurry in response to questions about problems that the standard libraries already solved.
-
"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!"
wrote last edited by [email protected]And I have the option to spin cotton off-road on rugged terrain...so there's that...
-
You say that, but I've watched the JS community move from one framework and tool suite to the next quite rapidly. By my recollection, I've seen a wholesale change in popular tooling at least four times in the last decade. Granted, that's not every developer's trajectory through all this, but (IMO) that's still a lot.
But changing frameworks is not why node_modules is so large. You don’t import Angular and Vue.