Bun: A Faster JavaScript Runtime for Linux Users

Bun is a modern JavaScript runtime designed to simplify and accelerate the development of JavaScript and TypeScript applications. Unlike traditional runtimes, Bun combines multiple tools into a single, cohesive package, including a bundler, test runner, and a Node.js – compatible package manager.

Key Features of Bun:

  • High Performance: Bun is built with speed in mind. By extending JavaScriptCore – the engine that powers Safari, which ensures fast startup times and efficient execution of your applications.
  • Comprehensive Toolkit: With Bun, you get an all-in-one solution that includes a bundler for packaging your code, a test runner for ensuring code reliability, and a package manager compatible with Node.js, streamlining your development workflow.
  • Node.js Compatibility: Bun aims to be a drop-in replacement for Node.js, implementing Node’s module resolution algorithm and supporting built-in modules like fs and path.
  • First-Class TypeScript and JSX Support: Bun allows you to execute .ts and .tsx files directly, respecting your tsconfig.json settings. It also transpiles JSX syntax to JavaScript internally, with React as the default but supporting custom JSX transforms.

Installing Bun on Linux

The unzip package is required to install Bun, so use your distribution’s package manager to install it as shown.

sudo apt install unzip         [On Debian, Ubuntu and Mint]
sudo dnf install unzip         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/unzip  [On Gentoo Linux]
sudo apk add unzip             [On Alpine Linux]
sudo pacman -S unzip           [On Arch Linux]
sudo zypper install unzip      [On OpenSUSE]    
sudo pkg install unzip         [On FreeBSD]

Next, use the curl command to download and execute Bun’s installation script, which will download the Bun binary and place it in your system’s PATH, making the bun command available globally.

curl -fsSL https://bun.sh/install | bash
Install Bun in Linux
Install Bun in Linux

Getting Started with Bun in Linux

After installing Bun, you can quickly set up a new project directory and start building applications.

mkdir my-bun-app
cd my-bun-app

Next, initialize the project with Bun, which will prompt you with several questions to set up your project. You can press enter to accept the default answers. Bun will generate essential files like package.json, index.ts, .gitignore, and tsconfig.json.

bun init
Initialize Bun in Linux
Initialize Bun in Linux

Create an HTTP Server

Open the index.ts file and add the following code to create a simple HTTP server:

const server = Bun.serve({
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
});

console.log(`Listening on http://localhost:${server.port}`);

Now run the server with:

bun run index.ts

You should see the message Listening on http://localhost:3000.

Run Bun in Linux
Run Bun in Linux

Open your browser and navigate to http://localhost:3000 to view the response from your server.

View Bun in Linux
View Bun in Linux

Managing Packages with Bun

To add a new package to your project, use the following command, which will install the specified package and update your package.json accordingly. Bun manages dependencies in the node_modules directory, similar to other package managers, ensuring compatibility with existing Node.js projects.

bun add figlet

Update index.ts to use figlet in the fetch handler.

import figlet from "figlet";

const server = Bun.serve({
  port: 3000,
  fetch(request) {
    const message = figlet.textSync("Welcome to Bun!", {
      horizontalLayout: "default",
      verticalLayout: "default",
    });
    return new Response(message, {
      headers: { "Content-Type": "text/plain" },
    });
  },
});

console.log(`Listening on http://localhost:${server.port}`);

Restart the server and refresh the page to see a new ASCII art banner.

View ASCII Art Banner
View ASCII Art Banner

If you need to remove Bun from your system, use the following command.

rm -rf ~/.bun
Conclusion

Bun is a powerful and efficient JavaScript runtime that simplifies the development process by integrating multiple tools into a single platform.

Its high performance, Node.js compatibility, and first-class support for TypeScript and JSX make it an ideal choice for developers looking for a modern, streamlined development experience.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.