[HN Gopher] Using Bun.js as a Bundler ___________________________________________________________________ Using Bun.js as a Bundler Author : shaneos Score : 32 points Date : 2023-05-17 21:46 UTC (1 hours ago) (HTM) web link (shaneosullivan.wordpress.com) (TXT) w3m dump (shaneosullivan.wordpress.com) | arendtio wrote: | Actually, I find kidzfun.art much more interesting than yet | another js bundler ;-) | shaneos wrote: | Glad to hear it! My kids love it which keeps me working on it. | Having your ideal testers living with you is an amazing plus | :-) | revskill wrote: | But it's not related ? | shaneos wrote: | It's the project I integrated Bun with as a bundler, thereby | running into all these issues. I figured that others would | hit the same problems so write this post about how to work | around them | afavour wrote: | This is awesome but in case anyone was wondering: the author was | previously using Webpack rather than a newer generation tool. So | the speed benefits outlined here would likely be the same if they | were still using Node with esbuild instead. | | Overall I like Bun - diversity in JS ecosystems is a great thing | - but I'm struggling to come up with reasons to actually use it | (which is fine! As long as the author is enjoying the work, why | not?) | paulddraper wrote: | You can see at the beginning of the article a benchmark | comparison with Webpack and esbuild. | brundolf wrote: | They weren't using SWC? They describe deploying to Vercel, and | Next.js has had stable built-in support for SWC for a good | while now | hu3 wrote: | > After a few hours of work, reading up on Bun and working my way | through these issues, I now have a much simpler build system that | runs in the blink of an eye. My Vercel build times have reduced | from 2 minutes to just 50 seconds (that's all React stuff & | fetching node_modules). My watch script runs in a few | milliseconds instead of 5 or more seconds, My code is much | simpler and I've removed Webpack, Browserify and Uglify from my | projects. | | This is like when esbuild first appeared level's of excitement to | me. Can't wait to try it out. | Jarred wrote: | (I work on Bun) | | Great writeup | | We are working on the crash with the minifier + multiple entry | points and hopefully will have a fix this week | | > Bun inserts code that looks like this at the bottom of the | built file, in this case from a file called account.ts | var account_default = {}; export { account_default | as default }; | | Currently, Bun only supports esm output so for this to work | you'll need `<script type="module">` instead of `<script>`. We | will add support for IIFE though (which should fix this) | | > Hopefully Bun will implement fs.watch soon and I can throw out | this code. | | Yeah we need to do this. It's not super hard and we have plenty | of existing code for inotify and kqueue in place for watching | files, there's no good reason why we haven't done this yet. | | > There's something unfinished with Bun's implementation of the | child_process module that breaks when run in the Vercel build | environment. | | Currently, Bun.spawn & Bun.spawnSync (which child_process uses | internally) relies on `pidfd_open` (https://man7.org/linux/man- | pages/man2/pidfd_open.2.html) which Vercel, due to using AWS | Lambda, does not support because it is on Linux Kernel 5.10 (3 | years old). We need to add a fork() + exec() fallback for this | | edit: it's not pidfd_open, but it is one of these posix_spawn | related calls that is missing | brundolf wrote: | Good to see some real anecdotes. Bun makes big promises, so I've | been really curious to see how the reality lines up right now | (and not just in a hypothetical future) ___________________________________________________________________ (page generated 2023-05-17 23:00 UTC)