Get your next remote job on LaraJobs.
JavaScript

Bun vs. NPM, Yarn, pnpm, and others

Benjamin Crozat
Published on Sep 11, 2023 0 comments Edit on GitHub
Bun vs. NPM, Yarn, pnpm, and others

What is Bun?

Bun is a fast JavaScript all-in-one toolkit. It can be used as a runtime (a drop-in replacement much faster than Node.js), as a test runner, and even as a package manager. Which is what interests us today.

Unlike Node.js or Deno, Bun is built on top of Webkit‘s JavaScript engine (JavaScriptCore). Webkit is the basis for Mobile Safari on Apple’s mobile platforms, as well as Safari for Mac.

Why would you switch away from NPM, pnpm, or Yarn?

Why would you take some time to switch to Bun instead of sticking with a regular Node.js runtime?

Well, if you actually test Bun, you will notice how incredibly faster than Node.js it is. Up to 30x!

  1. Your front-end dependencies will install faster.
  2. Your assets will compile faster.
  3. Your continuous integration environment will also run faster since installing and compiling front-end dependencies takes less time.

How to install Bun on macOS using Homebrew

Installing Bun on macOS couldn’t be easier. Just add the new source using brew tap oven-sh/bun and install Bun by running brew install bun.

How to install on Linux and WSL

Installing Bun on Linux is as easy as on macOS. Run curl -fsSL https://bun.sh/install | bash. That’s it!

Linux users are recommended to make sure the unzip package is installed first. You should also be running the kernel in at least version 5.1, even if version 5.6 or higher is a better choice.

How to install Bun on Windows

For now, unfortunately, Bun’s package manager abilities are not available for Windows. But this shouldn’t be a problem if you are running WSL.

There’s currently an experimental version for it, but it’s not recommended to use it in production.

Make some room to replace NPM, Yarn, or pnpm with Bun

You don’t need a specific package manager. You can use whichever one you want. Which is great news for Bun!

If you were using NPM or pnpm, remove their lock files because you won’t need them anymore since Bun uses its own lock file called bun.lockb by default.

If you were using NPM:

rm package-lock.json

If you were using pnpm:

rm pnpm-lock.yaml

And if you were using Yarn:

rm yarn.lock

Install your front-end dependencies using Bun’s package management abilities

To install your dependencies using Bun, use bun install. So, how fast was it? I bet you didn’t expect that!

Oh and by the way, in case of a problem, if you want to disable the cache, use bun install --no-cache.

For additional information and options, please refer to the official documentation of the bun install command.

bun install in action.

Add a package using Bun

Adding a package using Bun can easily be done using the bun add command. You will certainly appreciate how incredibly fast it is as well.

Here’s an example with 3 packages:

bun add tailwindcss autoprefixer postcss

For additional information and options, please refer to the official documentation of the bun add command.

bun add in action.

Remove a package using Bun

Removing a package using Bun can easily be done using the bun remove command. You will certainly appreciate how incredibly fast it is as well.

Let’s use Axios as an example, since we can now use the native Fetch API:

bun remove axios

For additional information and options, please refer to the official documentation of the bun remove command.

Run your scripts using Bun

Bun should be able to be integrated into your existing workflow without any issues. Run the scripts defined in your package.json file just like before using bun run.

We can run our compilation process. For instance, I always use Vite:

bun run dev

For additional information and options, please refer to the official documentation of the bun run command.

Bun’s video presentation

Wait, there's more!

Be the first to comment!

Get help or share something of value with other readers!

Great deals for enterprise developers
  • ZoneWatcher
    Get instant alerts on DNS changes across all major providers, before your customers notice.
    25% off for 12 months using the promo code CROZAT.
    Try ZoneWatcher for free
  • Quickly build highly customizable admin panels for Laravel projects.
    20% off on the pro version using the promo code CROZAT.
    Try Backpack for free
  • Summarize and talk to YouTube videos. Bypass ads, sponsors, chit-chat, and get to the point.
    Try Nobinge →
  • Monitor the health of your apps: downtimes, certificates, broken links, and more.
    20% off the first 3 months using the promo code CROZAT.
    Try Oh Dear for free
  • Keep the customers coming; monitor your Google rankings.
    30% off your first month using the promo code WELCOME30
    Try Wincher for free →
The latest community links
- / -