The exe output grew from from ~50MB to plus ~90MB from 2021 to 2024: https://github.com/denoland/deno/discussions/9811 which mean Deno is worse than Node.js's pkg solution by a decent margin.
The exe output grew from from ~50MB to plus ~90MB from 2021 to 2024: https://github.com/denoland/deno/discussions/9811 which mean Deno is worse than Node.js's pkg solution by a decent margin.
In my view, deno compile is more about shipping command line tools to people with all sorts of personal environments (which may not have deno at all)
I do wish there was support for Linux distributions based on musl (Alpine) directly for smaller containers.
In general I like the Deno approach better than Node. Would be cool to see the UI tooling flushed out. A material or fluent based component library where Deno can be used like Flutter would be very cool indeed.
If you really are pressed for space, you could use upx, or store 7z compressed code and embed the 7z library to decompress before passing it along to QuickJS.
Here's a proof of concept: https://github.com/ijustlovemath/jescx
Would like to see more runtime independent JS project such Hono. Although I'm not sure if it supports QuickJS.
While I agree with you that it's not optimal and should get fixed, 90MB doesn't sounds like it can stop you from deploying it either.
If reach one of my scripts was a separate build output from Deno that would be several GB of space.
I find it pretty ridicolous since I go to a website today and it's at least 15MB each time I refresh but 100MB on the server is a problem? Dude cmon.
Updates for games are large because they aren't "just updated files", but a giant blob that can't be rearranged since it's optimized for loading order later.
Giant self-contained deploys like that are bad because their use case is CLI/GUI tools shipped to the end user. To give you context: my /usr/bin is ~900 binaries and total size is 109mb.
That and that's likely 100MB that's going to be competing for memory now* , in FaaS environments especially that's a ton of resources and you increase latency to load that especially over network storage. This also inflates container sizes and just becomes a pain in general.
*Server environments you often don't want to be using swap, and the OS will likely consider it high priority anyway.
I could only agree with you if you have a single monolithic server, don't use containers, don't need to distribute it to others, and don't frequently need to run a CI/CD pipeline. Only then are there not a ton of downsides to a 10mb vs 100mb executable.
> When I download a modern game it's like 700GB so I donno why people complain about 100mb self contained deploys for javascript.
People have been complaining about game sizes for years. "You complain about a 100GB game, I don't know why you also complain about a 100mb self-executable for a javascript runtime" doesn't really make sense.
And we were not talking about js, we were talking about Deno specifically. And about binary growing year to year notably.
>Pretty much all cloud services offers way more than that for free
More than what? The question is always about difference in %. The number of services\instances can grow faster than you can rewrite your conde in go\c++\rust of whatever (not to mention you will have to hire people for the task). And all of a sudden this x3-x4 difference matters.
If size is such a big deal, then don't use Deno, Node or Bun.
My issue is that most people that are working in restricted environments would never touch javascript since it's not well suited for those kinds of environments. People that complain tend to be haters that just want something to hate upon.
It used to be about php, now it's about javascript.
You would use deno as base layer, your dependencies in another layer, your code is in the last layer.