Найти в Дзене
Chris Roylance

Вышло обновление Bun v1.3.8

В Bun теперь включен быстрый парсер Markdown, совместимый с CommonMark, написанный на Zig. Это порт популярной библиотеки md4c на Zig. Новый API Bun.markdown предоставляет три способа отображения Markdown: Рендеринг с использованием JavaScript-коллбэков для каждого элемента, идеально подходит для пользовательского HTML, вывода в терминал ANSI или удаления форматирования: Возвращает фрагмент React, который можно напрямую использовать в качестве возвращаемого значения компонента: Для React 18 и более ранних версий укажите reactVersion: 18, поскольку по умолчанию используется формат элементов React 19. Расширения GitHub Flavored Markdown включены по умолчанию: Дополнительные параметры включают wikiLinks, latexMath, headingIds и autolinkHeadings. Команда `bun build` теперь поддерживает опцию `--metafile-md`, которая генерирует визуализацию графа модулей вашего бандла в формате Markdown. Это особенно полезно для анализа состава бандла с помощью LLM-систем, таких как Claude — вставьте вывод
Оглавление

Bun.markdown — Встроенный парсер Markdown

В Bun теперь включен быстрый парсер Markdown, совместимый с CommonMark, написанный на Zig. Это порт популярной библиотеки md4c на Zig.

Новый API Bun.markdown предоставляет три способа отображения Markdown:

Bun.markdown.html() — Рендеринг в HTML

-2

Bun.markdown.render() — Пользовательские коллбэки

Рендеринг с использованием JavaScript-коллбэков для каждого элемента, идеально подходит для пользовательского HTML, вывода в терминал ANSI или удаления форматирования:

-3

Bun.markdown.react() — React Elements

Возвращает фрагмент React, который можно напрямую использовать в качестве возвращаемого значения компонента:

-4

Для React 18 и более ранних версий укажите reactVersion: 18, поскольку по умолчанию используется формат элементов React 19.

Расширения GFM

Расширения GitHub Flavored Markdown включены по умолчанию:

  • Таблицы
  • Зачеркнутый текст (~~удалено~~)
  • Списки задач (- [x] готово)
  • Разрешительные автоссылки

Дополнительные параметры включают wikiLinks, latexMath, headingIds и autolinkHeadings.

Опция командной строки --metafile-md для анализа пакетов, совместимого с LLM

Команда `bun build` теперь поддерживает опцию `--metafile-md`, которая генерирует визуализацию графа модулей вашего бандла в формате Markdown. Это особенно полезно для анализа состава бандла с помощью LLM-систем, таких как Claude — вставьте вывод в чат, чтобы выявить избыточность, понять цепочки зависимостей и оптимизировать сборки.

-5

Сгенерированный Markdown включает в себя:

  • Краткое описание — количество модулей, их размеры, распределение ESM/CJS, соотношение выходных и входных данных
  • Наибольшие входные файлы — отсортированы по размеру для выявления потенциального раздувания кода
  • Анализ точек входа — размер пакета, экспорт, пакеты CSS и скомпилированные модули
  • Цепочки зависимостей — наиболее часто импортируемые модули и обратные зависимости
  • Полный граф модулей — полная информация об импорте/экспорте для каждого модуля
  • Исходные данные для поиска — удобные для поиска по grep маркеры, такие как [MODULE:], [SIZE:], [IMPORT:]

API Bun.build() также поддерживает это через расширенную опцию метафайла:

-6

Исправления ошибок

  • Обновлена ​​функция mimalloc
  • Исправлено: napi_typeof некорректно возвращала napi_object вместо napi_function для коллбэков, обернутых в AsyncContextFrame, что приводило к сбою нативных дополнений, таких как encore.dev, с ошибкой "expect Function, got: Object" при использовании AsyncLocalStorage.run()
  • Исправлено: Сбой во время генерации снимка кучи в определенных случаях
  • Исправлено: Сбой в node:vm при использовании SyntheticModule с включенными node:async_hooks, например, при запуске сервера предварительного просмотра React Email
  • Исправлено: Обработка состояния потока HTTP/2, которая приводила к сбоям потоковых вызовов gRPC с ошибками DEADLINE_EXCEEDED в определенных случаях при использовании таких библиотек, как @google-cloud/firestore и @grpc/grpc-js
  • Исправлено: npm i -g bun не работал в Windows из-за того, что cmd-shim npm генерировал неработающие обертки, которые ссылались на /bin/sh из строк shebang скриптов-заполнителей