Поддержка 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.