Поддержка Bun в Laravel Sail и Forge
В Laravel Sail и Laravel Forge появилась поддержка Bun, быстрой универсальной среды выполнения JavaScript. После обновления Sail вы можете запустить Bun следующим образом:
sail bun run ... # Запуск команды `bun`.
sail bunx ... # Запуск команды `bunx`.
Bun — это новый универсальный инструментарий для приложений на JavaScript и TypeScript, поставляемый в виде одного исполняемого файла, получившего меткое название bun
. Как и npx
, bunx
запускает исполняемый файл пакета NPM и автоматически устанавливает пакет в глобальный общий кэш, если он не установлен в node_modules
.
Давайте рассмотрим, как можно использовать bun
в Sail или любом другом проекте Laravel.
Использование Bun в проекте Laravel
Чтобы начать использовать Bun в Laravel, сначала необходимо удалить существующий файл package-lock. Например, если вы используете npm
, выполните следующие действия:
# Удаление package-lock.json
git rm package-lock.json
git commit -m"Remove package-lock.json" package-lock.json
# Установка зависимостей с помощью bun
sail bun install
[1.30ms] ".env"
bun install v1.0.0 (822a00c4)
Checked 20 installs across 43 packages (no changes) [41.00ms]
После завершения bun install
можно добавить в git файл lock-файл:
git add bun.lockb
git commit -m "Install Bun" bun.lockb
Установка пакетов с помощью Bun
Для добавления новых зависимостей можно также использовать команду bun install
. Допустим, вы хотите установить пакет laravel-precognition-vue
с 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]
Команда build
и dev
с Vite
С помощью bun
можно запустить команду build
, собирающую зависимости Vite для продакшена:
$ sail bun run build
$ vite build
vite v4.4.9 building for production...
✓ 46 modules transformed.
public/build/manifest.json 0.25 kB │ gzip: 0.13 kB
public/build/assets/app-4ed993c7.js 0.00 kB │ gzip: 0.02 kB
public/build/assets/app-dbe23e4c.js 29.10 kB │ gzip: 11.64 kB
✓ built in 1.07s
Для рабочего процесса разработки можно выполнить команду dev
аналогичным образом:
sail bun run dev
Обновление Sail
Чтобы получить последнюю версию Laravel Sail в существующем приложении, обновите Sail через composer:
composer update larvel/sail
git add composer.lock
git commit -m"Update sail" composer.json
# Сборка последних образов Docker
sail down
sail build --pull
sail up -d
После сборки последней версии Sail можно убедиться, что bun
установлен, выполнив следующие действия:
sail bun --version
1.0.0
Выражаем благодарность Dmytro Morozov, внёсшему вклад в поддержку Bun! Подробнее см. laravel/sail Pull Request #616.
Bun — это универсальный высокопроизводительный набор инструментов для JavaScript, который после двух лет разработки выпустил версию 1.0. Он используется как:
- среда выполнения JavaScript (замена Node.js)
- Менеджер пакетов (замена npm, yarn, pnpm)
- Bundler (совместим с esbuild API)
- Прогонщик тестов (замена vitest, jest и т.д.)
- Программа запуска пакетов (замена npx, pnpx)
В дополнение к практически полной совместимости с API Node.js в нем реализованы такие дополнительные возможности, как:
- Совместимость с синтаксисом ESM и CJS одновременно
- Поддержка TypeScript без транспиляции
- Внутренний транспилятор для JSX/TSX
- JavaScript-макросы
- и т.д.
Я думаю, что Bun — это хороший инструмент, даже если он используется только как менеджер пакетов. Однако я полагаю, что в будущем он может быть рассмотрен и как основной бандлер для Laravel.