Documentação • Discordância • Problemas • Roteiro
Bun é um kit de ferramentas completo para aplicativos JavaScript e TypeScript. Ele é enviado como um único executável chamado bun
.
Em sua essência está o tempo de execução Bun , um tempo de execução JavaScript rápido projetado como um substituto imediato para o Node.js. Ele é escrito em Zig e desenvolvido com JavaScriptCore, reduzindo drasticamente o tempo de inicialização e o uso de memória.
bun run index.tsx # TS e JSX com suporte pronto para uso
A ferramenta de linha de comando bun
também implementa um executor de testes, um executor de scripts e um gerenciador de pacotes compatível com Node.js. Em vez de 1.000 node_modules para desenvolvimento, você só precisa de bun
. As ferramentas integradas do Bun são significativamente mais rápidas do que as opções existentes e podem ser usadas em projetos Node.js existentes com pouca ou nenhuma alteração.
bun test # executa testesbun run start # executa o script `start` em `package.json`bun install <pkg> # instala um pacotebunx cowsay 'Olá, mundo!' #executa um pacote
Bun suporta Linux (x64 e arm64), macOS (x64 e Apple Silicon) e Windows (x64).
Usuários Linux — Kernel versão 5.6 ou superior é fortemente recomendado, mas o mínimo é 5.1.
# com script de instalação (recomendado)curl -fsSL https://bun.sh/install | bash# no windowspowershell -c "irm bun.sh/install.ps1 | iex"# com npmnpm install -g bun# com Homebrewbrew tap forno-sh/bun preparar pão # com forno pull / pão Dockerdocker docker run --rm --init --ulimit memlock=-1:-1 forno/pão
Para atualizar para a versão mais recente do Bun, execute:
atualização de pão
Bun libera automaticamente uma versão canário em cada commit em main
. Para atualizar para a versão canário mais recente, execute:
atualização de pão --canary
Ver versão canário
Introdução
O que é pão?
Instalação
Início rápido
Texto datilografado
Modelagem
bun init
bun create
Tempo de execução
bun run
Tipos de arquivo
Texto datilografado
JSX
Variáveis de ambiente
APIs de pão
APIs da Web
Compatibilidade com Node.js.
Executável de arquivo único
Plug-ins
Modo de exibição
Resolução do módulo
Instalação automática
bunfig.toml
Depurador
API de estrutura
Gerenciador de pacotes
bun install
bun add
bun remove
bun update
bun link
bun pm
Cache global
Espaços de trabalho
Scripts de ciclo de vida
Filtro
Arquivo de bloqueio
Escopos e registros
Substituições e resoluções
Empacotador
Bun.build
Carregadores
Plug-ins
Macros
vs esbuild
Executor de testes
bun test
Escrevendo testes
Modo de exibição
Ganchos de ciclo de vida
Simulações
Instantâneos
Datas e horários
Teste DOM
Cobertura de código
Corredor de pacotes
bunx
API
Servidor HTTP
WebSockets
Trabalhadores
Dados binários
Fluxos
E/S de arquivo
importar.meta
SQLite
FileSystemRouter
Soquetes TCP
Soquetes UDP
Globais
$ Concha
Processos filhos
Transpilador
Hashing
Console
FFI
HTMLReescritor
Teste
Utilitários
API de nó
Globo
Sempre
Projeto
Roteiro
Comparativo de mercado
Contribuindo
Construindo janelas
Licença
Binário
Converter um Blob em DataView
Converter um Blob em ReadableStream
Converter um Blob em uma string
Converter um Blob em Uint8Array
Converter um Blob em um ArrayBuffer
Converter um buffer em um blob
Converter um buffer em ReadableStream
Converter um buffer em uma string
Converter um buffer em Uint8Array
Converter um buffer em um ArrayBuffer
Converter um DataView em uma string
Converter um Uint8Array em um Blob
Converter um Uint8Array em um buffer
Converter um Uint8Array em um DataView
Converter um Uint8Array em um ReadableStream
Converter um Uint8Array em uma string
Converter um Uint8Array em um ArrayBuffer
Converter um ArrayBuffer em um Blob
Converter um ArrayBuffer em um Buffer
Converter um ArrayBuffer em uma string
Converter um ArrayBuffer em um Uint8Array
Converta um ArrayBuffer em uma matriz de números
Ecossistema
Construa um frontend usando Vite e Bun
Crie um aplicativo com Astro e Bun
Crie um aplicativo com Next.js e Bun
Crie um aplicativo com Nuxt e Bun
Crie um aplicativo com Qwik e Bun
Crie um aplicativo com Remix e Bun
Crie um aplicativo com SolidStart e Bun
Crie um aplicativo com SvelteKit e Bun
Construa um servidor HTTP usando Elysia e Bun
Construa um servidor HTTP usando Express e Bun
Construa um servidor HTTP usando Hono e Bun
Construa um servidor HTTP usando StricJS e Bun
Conteinerize um aplicativo Bun com Docker
Crie um bot Discord
Implantar um aplicativo Bun no Render
Ler e gravar dados no MongoDB usando Mongoose e Bun
Execute Bun como um daemon com PM2
Execute Bun como um daemon com systemd
Renderização do lado do servidor (SSR) um componente React
Use Drizzle ORM com Pão
Use EdgeDB com Bun
Use Postgres sem servidor do Neon com Bun
Use Prisma com Pão
Use React e JSX
Adicionar Sentry a um aplicativo Bun
HTTP
Uso comum do servidor HTTP
Configurar TLS em um servidor HTTP
buscar com soquetes de domínio unix no Bun
Recarregar a quente um servidor HTTP
Solicitações HTTP proxy usando fetch()
Envie uma solicitação HTTP usando fetch
Inicie um cluster de servidores HTTP
Transmita um arquivo como uma resposta HTTP
Streaming de servidor HTTP com iteradores assíncronos
Streaming de servidor HTTP com streams Node.js
Fazer upload de arquivos via HTTP usando FormData
Escreva um servidor HTTP simples
Instalar
Adicionar uma dependência
Adicione uma dependência de desenvolvimento
Adicione uma dependência do Git
Adicione uma dependência de peer
Adicione uma dependência de tarball
Adicione uma dependência confiável
Adicione uma dependência opcional
Configure um registro privado para um escopo de organização com bun install
Configure o git para diferenciar o lockb lockfile do Bun
Configurando um monorepo usando espaços de trabalho
Gere um arquivo de bloqueio legível por humanos
Instale um pacote com um nome diferente
Instale dependências com Bun em GitHub Actions
Substitua o registro npm padrão para instalação do bun
Usando bun install com um registro npm do Azure Artifacts
Usando bun install com Artifactory
Processo
Obtenha o tempo de atividade do processo em nanossegundos
Ouça CTRL+C
Ouça os sinais do sistema operacional
Analisar argumentos de linha de comando
Ler do stdin
Leia stderr de um processo filho
Leia stdout de um processo filho
Gerar um processo filho
Gere um processo filho e comunique-se usando IPC
Ler arquivo
Verifique se existe um arquivo
Obtenha o tipo MIME de um arquivo
Ler um arquivo como ReadableStream
Ler um arquivo como uma string
Ler um arquivo para um Buffer
Ler um arquivo para um Uint8Array
Ler um arquivo para um ArrayBuffer
Ler um arquivo JSON
Observe um diretório para alterações
Tempo de execução
Depurando Bun com a extensão VS Code
Depurando Bun com o depurador web
Definir e substituir constantes e globais estáticos
Importe um arquivo JSON
Importar um arquivo TOML
Importar arquivo HTML como texto
Instale e execute Bun em GitHub Actions
Instale declarações TypeScript para Bun
Remapear caminhos de importação
Ler variáveis de ambiente
Execute um comando Shell
Definir um fuso horário em Bun
Definir variáveis de ambiente
Fluxos
Converter um Node.js legível em um blob
Converter um Node.js legível em uma string
Converter um Node.js legível em um ArrayBuffer
Converter um Node.js legível em JSON
Converter um ReadableStream em um Blob
Converter um ReadableStream em um Buffer
Converter um ReadableStream em uma string
Converter um ReadableStream em um Uint8Array
Converta um ReadableStream em uma matriz de pedaços
Converter um ReadableStream em um ArrayBuffer
Converter um ReadableStream em JSON
Teste
Saia mais cedo com o executor de testes Bun
Gere relatórios de cobertura de código com o executor de testes Bun
Marque um teste como "tarefa" com o executor de testes Bun
Migrar do Jest para o executor de testes do Bun
Funções simuladas no bun test
Execute novamente os testes várias vezes com o executor de testes Bun
Execute testes no modo relógio com Bun
Execute seus testes com o executor de testes Bun
Defina um limite de cobertura de código com o executor de testes Bun
Defina um tempo limite por teste com o executor de testes Bun
Defina a hora do sistema no executor de testes do Bun
Ignore os testes com o executor de testes Bun
Espiar métodos no bun test
Atualizar instantâneos no bun test
Use teste de instantâneo no bun test
Escreva testes DOM do navegador com Bun e happy-dom
Util
Verifique se o arquivo atual é o ponto de entrada
Verifique se dois objetos são profundamente iguais
Compactar e descompactar dados com DEFLATE
Compactar e descompactar dados com gzip
Converter um URL de arquivo em um caminho absoluto
Converter um caminho absoluto em um URL de arquivo
Detecte quando o código é executado com Bun
Codificar e decodificar strings base64
Escape de uma string HTML
Obtenha o caminho absoluto do arquivo atual
Obtenha o caminho absoluto para o ponto de entrada atual
Obtenha a versão atual do Bun
Obtenha o diretório do arquivo atual
Obtenha o nome do arquivo atual
Obtenha o caminho para um arquivo bin executável
Hash uma senha
Durma por um número fixo de milissegundos
WebSocket
Construir um servidor WebSocket de publicação-assinatura
Construa um servidor WebSocket simples
Habilitar compactação para mensagens WebSocket
Definir dados contextuais por soquete em um WebSocket
Gravar arquivo
Anexar conteúdo a um arquivo
Copie um arquivo para outro local
Excluir um arquivo
Escreva um Blob em um arquivo
Escreva um arquivo de forma incremental
Escreva um arquivo em stdout
Escreva um ReadableStream em um arquivo
Escreva uma resposta para um arquivo
Escreva uma string em um arquivo
Escreva para stdout
Consulte o guia Projeto > Contribuição para começar a contribuir para o Bun.
Consulte a página Projeto > Licença para obter informações sobre o licenciamento do Bun.