Support for Bun lands in Laravel Sail and Forge
Published on by Paul Redmond
Both Laravel Sail and Laravel Forge now includes support for Bun, a fast all-in-one JavaScript runtime. Once you update Sail, you can start Bun as follows:
sail bun run ... # Run a `bun` commandsail bunx ... # Run a `bunx` command
Bun is a new all-in-one toolkit for JavaScript and TypeScript apps that ships with a single executable, aptly named bun
. Like npx
, the bunx
runs an NPM package executable and automatically installs the package to a global shared cache if not installed in node_modules
.
Let's look at how we can use bun
with Sail or any Laravel project.
Using Bun in Your Laravel Project
To start using Bun with Laravel, you'll first want to remove the existing package-lock file. For example, if you're using npm,
you'll want to run the following:
# Remove package-lock.jsongit rm package-lock.jsongit commit -m"Remove package-lock.json" package-lock.json # Install dependencies with bunsail bun install[1.30ms] ".env"bun install v1.0.0 (822a00c4) Checked 20 installs across 43 packages (no changes) [41.00ms]
After the bun install
succeeds, you can version the lock file:
git add bun.lockbgit commit -m"Install Bun" bun.lockb
Install Packages with Bun
You can also use the bun install
command to add new dependencies. Let's say you want to install the laravel-precognition-vue
package with Laravel Precognition:
$ sail bun install laravel-precognition-vue [1.05ms] ".env"bun add v1.0.0 (822a00c4) installed laravel-precognition-vue@0.5.1 9 packages installed [1.57s]
The build and dev command with Vite
You can use bun
to run the build
command that builds Vite dependencies for production:
$ sail bun run build$ vite buildvite v4.4.9 building for production...✓ 46 modules transformed.public/build/manifest.json 0.25 kB │ gzip: 0.13 kBpublic/build/assets/app-4ed993c7.js 0.00 kB │ gzip: 0.02 kBpublic/build/assets/app-dbe23e4c.js 29.10 kB │ gzip: 11.64 kB✓ built in 1.07s
For your development workflow, you can run the dev
command the same way:
sail bun run dev
Updating Sail
To get the latest version of Laravel Sail in your existing application, update Sail via composer:
composer update larvel/sailgit add composer.lockgit commit -m"Update sail" composer.json # Build the latest Docker imagessail downsail build --pullsail up -d
Once you've built the latest version of Sail, you can verify that bun is installed with the following:
sail bun --version1.0.0
Hat tip to Dmytro Morozov, who contributed Bun support! See laravel/sail Pull Request #616 for more details.