Разработчики среды выполнения javascript и TypeScript под названием Bun рассказали про релиз версии 0.8. В обновлении добавили поддержку отладки кода, веб-фрейворков Nuxt и SvelteKit и улучшили уже имеющиеся функции. Релиз Bun 1.0 запланирован на 7 сентября 2023 года.
Основные нововведения Bun 0.8:
добавили поддержку отладчиков через протокол инспектора WebKit. Для использования необходимо запустить файл или скрипт с флагом --inspect. После этого создастся HTTP-сервер и второй сервер Localhost WebSocket на неиспользуемом порту, который будет поддерживать связь с инструментами отладки:$ bun --inspect server.ts Listening on http://localhost:3000 ------------------ Bun Inspector ------------------ Listening at: ws://localhost:6499/0tqxs9exrgrm Inspect in browser: https://debug.bun.sh/#localhost:6499/0tqxs9exrgrm ------------------ Bun Inspector ------------------
флаг --inspect выводит в консоль ссылку https://debug.bun.sh#. Этот домен использует урезанную версию Safari Developer Tools, предназначенную для отладки Bun. Переход по ссылке автоматически запускает новую сессию отладки;
с помощью новой команды bun update можно обновить все зависимости в проекте до последних версий в соответствии с данными в packages.json. Обновить конкретный пакет можно с помощью указания его названия в команде bun update zod. Также важно отметить, что команда bun upgrade обновляет саму среду выполнения, а не является синонимом к update;
добавили поддержку веб-фреймворка SvelteKit. Создать новый проект можно с помощью create-svetle:$ bunx create-svelte my-app create-svelte version 5.0.5 ┌ Welcome to SvelteKit! │ ◇ Which Svelte app template? │ SvelteKit demo app │ ◇ Add type checking with TypeScript? │ Yes, using TypeScript syntax │ ◇ Select additional options (use arrow keys/space bar) │ none │ └ Your project is ready! ✔ Typescript Inside Svelte components, use <script lang="ts"> Install community-maintained integrations: https://github.com/svelte-add/svelte-add
Установить зависимости и запустить сервер разработки можно так:$ cd my-app $ bun install $ bun run dev -- --open
Приложение будет доступно по адресу localhost:3000.
добавили поддержку веб-фреймворка Nuxt, для создания проекта необходимо использовать набор инструментов nuxi:$ bunx --bun nuxi init my-app $ cd my-app $ bun install
После этого можно будет запустить сервер разработки:$ bun --bun run dev $ nuxt dev Nuxt 3.6.5 with Nitro 2.5.2 > Local: http://localhost:3000/ > Network: http://192.168.0.21:3000/ > Network: http://[fd8a:d31d:481c:4883:1c64:3d90:9f83:d8a2]:3000/ ✔ Nuxt DevTools is enabled v0.8.0 (experimental) ℹ Vite client warmed up in 547ms ✔ Nitro built in 244 ms
Приложение будет доступно по адресу localhost:3000.
добавили поддержку потоковой передачи ответов с помощью функции fetch(). Это значит, что можно не дожидаться всего ответа и получать его по частям:const res = await fetch("https://example.com/bigfile.txt"); // read the response chunk-by-chunk! for await (const chunk of res.body) { console.log(chunk); }
В блоге разработчиков рассказали, что это можно использовать для передачи ответов из API OpenAI:import OpenAI from "openai"; const openai = new OpenAI({ apiKey: "my api key", }); const stream = await openai.chat.completions.create({ model: "gpt-4", messages: [{ role: "user", content: "Say this is a test" }], stream: true, }); for await (const part of stream) { process.stdout.write(part.choices[0]?.delta?.content || ""); }
реализовали полную поддержку библиотек inquirer, enquirer и prompts, предназначенных для создания интерактивных инструментов командной строки;
появилась поддержка test.each и describe.each из Jest, что позволяет запускать тесты с разными входными данными:describe.each([ [1, 1, 2], [1, 2, 3], [2, 1, 3], ])("add(%i, %i)", (a, b, expected) => { test(`returns ${expected}`, () => { expect(a + b).toBe(expected); }); });
добавили новый глобальный конструктор File, предназначенный для работы с файлами:const file = new File(["hello world"], "hello.txt", { type: "text/plain", lastModified: Date.now() - 1000, }); file.size; // 11 file.name; // "hello.txt" file.type; // "text/plain" file.lastModified; // 1693597759310573
Среда выполнения Bun полностью совместима с Node.js, но исправляет его проблемы. К примеру, Bun работает быстрее и включает в себя все необходимые инструменты. Также у среды выполнения предусмотрен собственный пакетный менеджер, совместимый с npm.
Установить Bun можно с помощью curl, npm, brew или docker. На сайте проекта доступна документация для разработчиков, а код проекта опубликован на GitHub.
Источник новости: habr.com