Skip to content

O comportamento do Bun pode ser configurado usando seu arquivo de configuração, bunfig.toml.

Em geral, o Bun depende de arquivos de configuração pré-existentes como package.json e tsconfig.json para configurar seu comportamento. bunfig.toml é necessário apenas para configurar coisas específicas do Bun. Este arquivo é opcional, e o Bun funcionará sem ele.

Global vs. local ​

Em geral, é recomendado adicionar um arquivo bunfig.toml na raiz do seu projeto, junto com seu package.json.

Para configurar o Bun globalmente, você também pode criar um arquivo .bunfig.toml em um dos seguintes caminhos:

  • $HOME/.bunfig.toml
  • $XDG_CONFIG_HOME/.bunfig.toml

Se ambos os bunfig global e local forem detectados, os resultados são mesclados superficialmente, com o local sobrescrevendo o global. Flags de CLI substituirão a configuração bunfig quando aplicável.

Runtime ​

O comportamento do runtime do Bun é configurado usando campos de nível superior no arquivo bunfig.toml.

preload ​

Um array de scripts/plugins para executar antes de rodar um arquivo ou script.

bunfig.toml
toml
# scripts para executar antes de `bun run` de um arquivo ou script
# registra plugins adicionando-os a esta lista
preload = ["./preload.ts"]

jsx ​

Configure como o Bun lida com JSX. Você também pode definir estes campos no compilerOptions do seu tsconfig.json, mas eles são suportados aqui também para projetos não-TypeScript.

bunfig.toml
toml
jsx = "react"
jsxFactory = "h"
jsxFragment = "Fragment"
jsxImportSource = "react"

Consulte a documentação tsconfig para mais informações sobre estes campos.

smol ​

Ativa o modo smol. Isso reduz o uso de memória com custo para o desempenho.

bunfig.toml
toml
# Reduz o uso de memória com custo para o desempenho
smol = true

logLevel ​

Define o nível de log. Pode ser um de "debug", "warn" ou "error".

bunfig.toml
toml
logLevel = "debug" # "debug" | "warn" | "error"

define ​

O campo define permite substituir certos identificadores globais por expressões constantes. O Bun substituirá qualquer uso do identificador pela expressão. A expressão deve ser uma string JSON.

bunfig.toml
toml
[define]
# Substitui qualquer uso de "process.env.bagel" pela string `lox`.
# Os valores são analisados como JSON, exceto que strings com aspas simples são suportadas e `'undefined'` se torna `undefined` em JS.
# Isso provavelmente mudará em uma versão futura para ser TOML regular. É uma herança do parsing de argumentos CLI.
"process.env.bagel" = "'lox'"

loader ​

Configure como o Bun mapeia extensões de arquivo para loaders. Isso é útil para carregar arquivos que não são suportados nativamente pelo Bun.

bunfig.toml
toml
[loader]
# quando um arquivo .bagel é importado, trata como um arquivo tsx
".bagel" = "tsx"

O Bun suporta os seguintes loaders:

  • jsx
  • js
  • ts
  • tsx
  • css
  • file
  • json
  • toml
  • wasm
  • napi
  • base64
  • dataurl
  • text

telemetry ​

O campo telemetry é usado para ativar/desativar analytics. Por padrão, telemetry está ativado. Isso é equivalente à variável de ambiente DO_NOT_TRACK.

Atualmente não coletamos telemetry e esta configuração é usada apenas para ativar/desativar relatórios de crash anônimos, mas no futuro planejamos coletar informações como quais APIs do Bun são mais usadas ou quanto tempo bun build leva.

bunfig.toml
toml
telemetry = false

console ​

Configure o comportamento de saída do console.

console.depth ​

Define a profundidade padrão para inspeção de objetos do console.log(). Padrão 2.

bunfig.toml
toml
[console]
depth = 3

Isso controla quão profundamente os objetos aninhados são exibidos na saída do console. Valores mais altos mostram mais propriedades aninhadas, mas podem produzir saída verbosa para objetos complexos. Esta configuração pode ser substituída pela flag CLI --console-depth.

Test runner ​

O test runner é configurado na seção [test] do seu bunfig.toml.

bunfig.toml
toml
[test]
# configuração aqui

test.root ​

O diretório raiz para executar testes. Padrão ..

bunfig.toml
toml
[test]
root = "./__tests__"

test.preload ​

Mesmo que o campo preload de nível superior, mas aplica-se apenas a bun test.

bunfig.toml
toml
[test]
preload = ["./setup.ts"]

test.smol ​

Mesmo que o campo smol de nível superior, mas aplica-se apenas a bun test.

bunfig.toml
toml
[test]
smol = true

test.coverage ​

Ativa relatórios de coverage. Padrão false. Use --coverage para substituir.

bunfig.toml
toml
[test]
coverage = false

test.coverageThreshold ​

Para especificar um threshold de coverage. Por padrão, nenhum threshold é definido. Se sua suíte de testes não atingir ou exceder este threshold, bun test sairá com um código de saída não zero para indicar falha.

bunfig.toml
toml
[test]

# para exigir 90% de coverage de linha e função
coverageThreshold = 0.9

Diferentes thresholds podem ser especificados para coverage por linha, por função e por statement.

bunfig.toml
toml
[test]
coverageThreshold = { line = 0.7, function = 0.8, statement = 0.9 }

test.coverageSkipTestFiles ​

Se deve pular arquivos de teste ao computar estatísticas de coverage. Padrão false.

bunfig.toml
toml
[test]
coverageSkipTestFiles = false

test.coveragePathIgnorePatterns ​

Exclui arquivos específicos ou padrões de arquivo de relatórios de coverage usando padrões glob. Pode ser um padrão de string única ou um array de padrões.

bunfig.toml
toml
[test]
# padrão único
coveragePathIgnorePatterns = "**/*.spec.ts"

# múltiplos padrões
coveragePathIgnorePatterns = [
  "**/*.spec.ts",
  "**/*.test.ts",
  "src/utils/**",
  "*.config.js"
]

test.coverageReporter ​

Por padrão, relatórios de coverage serão impressos no console. Para relatórios de coverage persistentes em ambientes CI e para outras ferramentas use lcov.

bunfig.toml
toml
[test]
coverageReporter  = ["text", "lcov"]  # padrão ["text"]

test.coverageDir ​

Define o caminho onde relatórios de coverage serão salvos. Note que isso funciona apenas para coverageReporter persistente como lcov.

bunfig.toml
toml
[test]
coverageDir = "path/to/somewhere"  # padrão "coverage"

test.randomize ​

Executa testes em ordem aleatória. Padrão false.

bunfig.toml
toml
[test]
randomize = true

Isso ajuda a capturar bugs relacionados a interdependências de testes executando testes em uma ordem diferente a cada vez. Quando combinado com seed, a ordem aleatória se torna reprodutível.

A flag CLI --randomize substituirá esta configuração quando especificada.

test.seed ​

Define a seed aleatória para randomização de testes. Esta opção requer que randomize seja true.

bunfig.toml
toml
[test]
randomize = true
seed = 2444615283

Usar uma seed torna a ordem de testes randomizada reprodutível entre execuções, o que é útil para debugar testes flaky. Quando você encontrar uma falha de teste com randomização ativada, pode usar a mesma seed para reproduzir a ordem exata dos testes.

A flag CLI --seed substituirá esta configuração quando especificada.

test.rerunEach ​

Re-executa cada arquivo de teste um número especificado de vezes. Padrão 0 (executa uma vez).

bunfig.toml
toml
[test]
rerunEach = 3

Isso é útil para capturar testes flaky ou comportamento não determinístico. Cada arquivo de teste será executado o número especificado de vezes.

A flag CLI --rerun-each substituirá esta configuração quando especificada.

test.concurrentTestGlob ​

Especifica um padrão glob para executar automaticamente arquivos de teste correspondentes com execução de teste concorrente ativada. Arquivos de teste que correspondem a este padrão se comportarão como se a flag --concurrent fosse passada, executando todos os testes dentro desses arquivos concorrentemente.

bunfig.toml
toml
[test]
concurrentTestGlob = "**/concurrent-*.test.ts"

Isso é útil para:

  • Migrar gradualmente suítes de teste para execução concorrente
  • Executar testes de integração concorrentemente enquanto mantém testes unitários sequenciais
  • Separar testes concorrentes rápidos de testes que requerem execução sequencial

A flag CLI --concurrent substituirá esta configuração quando especificada.

test.onlyFailures ​

Quando ativado, apenas testes com falha são exibidos na saída. Isso ajuda a reduzir ruído em grandes suítes de teste ocultando testes que passaram. Padrão false.

bunfig.toml
toml
[test]
onlyFailures = true

Isso é equivalente a usar a flag --only-failures ao executar bun test.

test.reporter ​

Configure as configurações do reportador de testes.

test.reporter.dots ​

Ativa o reportador dots, que exibe uma saída compacta mostrando um ponto para cada teste. Padrão false.

bunfig.toml
toml
[test.reporter]
dots = true

test.reporter.junit ​

Ativa relatórios JUnit XML e especifica o caminho do arquivo de saída.

bunfig.toml
toml
[test.reporter]
junit = "test-results.xml"

Isso gera um relatório JUnit XML que pode ser consumido por sistemas CI e outras ferramentas.

Package manager ​

Gerenciamento de pacotes é uma questão complexa; para suportar uma gama de casos de uso, o comportamento de bun install pode ser configurado na seção [install].

bunfig.toml
toml
[install]
# configuração aqui

install.optional ​

Se deve instalar dependências opcionais. Padrão true.

bunfig.toml
toml
[install]
optional = true

install.dev ​

Se deve instalar dependências de desenvolvimento. Padrão true.

bunfig.toml
toml
[install]
dev = true

install.peer ​

Se deve instalar dependências peer. Padrão true.

bunfig.toml
toml
[install]
peer = true

install.production ​

Se bun install executará em "modo de produção". Padrão false.

No modo de produção, "devDependencies" não são instaladas. Você pode usar --production na CLI para substituir esta configuração.

bunfig.toml
toml
[install]
production = false

install.exact ​

Se deve definir uma versão exata no package.json. Padrão false.

Por padrão, o Bun usa intervalos caret; se a versão latest de um pacote é 2.4.1, o intervalo de versão no seu package.json será ^2.4.1. Isso indica que qualquer versão de 2.4.1 até (mas não incluindo) 3.0.0 é aceitável.

bunfig.toml
toml
[install]
exact = false

install.saveTextLockfile ​

Se false, gera um bun.lockb binário em vez de um arquivo bun.lock baseado em texto ao executar bun install e nenhum lockfile está presente.

Padrão true (desde Bun v1.2).

bunfig.toml
toml
[install]
saveTextLockfile = false

install.auto ​

Para configurar o comportamento de auto-instalação de pacotes do Bun. Padrão "auto" — quando nenhuma pasta node_modules é encontrada, o Bun instalará automaticamente dependências em tempo de execução durante a execução.

bunfig.toml
toml
[install]
auto = "auto"

Valores válidos são:

ValorDescrição
"auto"Resolve módulos do node_modules local se existir. Caso contrário, auto-instala dependências em tempo de execução.
"force"Sempre auto-instala dependências, mesmo se node_modules existir.
"disable"Nunca auto-instala dependências.
"fallback"Verifica node_modules local primeiro, depois auto-instala quaisquer pacotes que não forem encontrados. Você pode ativar isso na CLI com bun -i.

install.frozenLockfile ​

Quando true, bun install não atualizará bun.lock. Padrão false. Se package.json e o bun.lock existente não estiverem de acordo, isso gerará erro.

bunfig.toml
toml
[install]
frozenLockfile = false

install.dryRun ​

Se bun install realmente instalará dependências. Padrão false. Quando true, é equivalente a definir --dry-run em todos os comandos bun install.

bunfig.toml
toml
[install]
dryRun = false

install.globalDir ​

Para configurar o diretório onde o Bun coloca pacotes instalados globalmente.

Variável de ambiente: BUN_INSTALL_GLOBAL_DIR

bunfig.toml
toml
[install]
# onde `bun install --global` instala pacotes
globalDir = "~/.bun/install/global"

install.globalBinDir ​

Para configurar o diretório onde o Bun instala binários e CLIs instalados globalmente.

Variável de ambiente: BUN_INSTALL_BIN

bunfig.toml
toml
[install]
# onde bins de pacotes instalados globalmente são linkados
globalBinDir = "~/.bun/bin"

install.registry ​

O registry padrão é https://registry.npmjs.org/. Isso pode ser configurado globalmente em bunfig.toml:

bunfig.toml
toml
[install]
# define registry padrão como string
registry = "https://registry.npmjs.org"
# define um token
registry = { url = "https://registry.npmjs.org", token = "123456" }
# define um nome de usuário/senha
registry = "https://username:password@registry.npmjs.org"

install.linkWorkspacePackages ​

Para configurar como pacotes de workspace são linkados, use a opção install.linkWorkspacePackages.

Se deve linkar pacotes de workspace da raiz do monorepo para seus respectivos diretórios node_modules. Padrão true.

bunfig.toml
toml
[install]
linkWorkspacePackages = true

install.scopes ​

Para configurar um registry para um escopo específico (ex: @myorg/<package>) use install.scopes. Você pode referenciar variáveis de ambiente com a notação $variable.

bunfig.toml
toml
[install.scopes]
# registry como string
myorg = "https://username:password@registry.myorg.com/"

# registry com nome de usuário/senha
# você pode referenciar variáveis de ambiente
myorg = { username = "myusername", password = "$npm_password", url = "https://registry.myorg.com/" }

# registry com token
myorg = { token = "$npm_token", url = "https://registry.myorg.com/" }

install.ca e install.cafile ​

Para configurar um certificado CA, use install.ca ou install.cafile para especificar um caminho para um arquivo de certificado CA.

bunfig.toml
toml
[install]
# O certificado CA como string
ca = "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"

# Um caminho para um arquivo de certificado CA. O arquivo pode conter múltiplos certificados.
cafile = "path/to/cafile"

install.cache ​

Para configurar o comportamento do cache:

bunfig.toml
toml
[install.cache]

# o diretório para usar para o cache
dir = "~/.bun/install/cache"

# quando true, não carrega do cache global.
# Bun ainda pode escrever em node_modules/.cache
disable = false

# quando true, sempre resolve as últimas versões do registry
disableManifest = false

install.lockfile ​

Para configurar comportamento de lockfile, use a seção install.lockfile.

Se deve gerar um lockfile em bun install. Padrão true.

bunfig.toml
toml
[install.lockfile]
save = true

Se deve gerar um lockfile não-Bun junto com bun.lock. (Um bun.lock sempre será criado.) Atualmente "yarn" é o único valor suportado.

bunfig.toml
toml
[install.lockfile]
print = "yarn"

install.linker ​

Configure a estratégia de linker para instalar dependências. Padrão "isolated" para novos workspaces, "hoisted" para novos projetos de pacote único e projetos existentes (feitos pré-v1.3.2).

Para documentação completa consulte Package manager > Isolated installs.

bunfig.toml
toml
[install]
linker = "hoisted"

Valores válidos são:

ValorDescrição
"hoisted"Linka dependências em um diretório node_modules compartilhado.
"isolated"Linka dependências dentro de cada instalação de pacote.
bunfig.toml
toml
[debug]
# Ao navegar para um link blob: ou src:, abre o arquivo no seu editor
# Se não, tenta $EDITOR ou $VISUAL
# Se ainda falhar, tenta Visual Studio Code, depois Sublime Text, depois alguns outros
# Isso é usado por Bun.openInEditor()
editor = "code"

# Lista de editores:
# - "subl", "sublime"
# - "vscode", "code"
# - "textmate", "mate"
# - "idea"
# - "webstorm"
# - "nvim", "neovim"
# - "vim","vi"
# - "emacs"

install.security.scanner ​

Configure um scanner de segurança para escanear pacotes por vulnerabilidades antes da instalação.

Primeiro, instale um scanner de segurança do npm:

bash
bun add -d @acme/bun-security-scanner

Depois configure-o no seu bunfig.toml:

toml
[install.security]
scanner = "@acme/bun-security-scanner"

Quando um scanner de segurança é configurado:

  • Auto-instalação é automaticamente desativada por segurança
  • Pacotes são escaneados antes da instalação
  • Instalação é cancelada se problemas fatais forem encontrados
  • Avisos de segurança são exibidos durante a instalação

Saiba mais sobre usando e escrevendo security scanners.

install.minimumReleaseAge ​

Configure uma idade mínima (em segundos) para versões de pacotes npm. Versões de pacotes publicadas mais recentemente que este threshold serão filtradas durante a instalação. Padrão é null (desativado).

bunfig.toml
toml
[install]
# Instala apenas versões de pacotes publicadas há pelo menos 3 dias
minimumReleaseAge = 259200
# Estes pacotes ignorarão o requisito mínimo de idade de 3 dias
minimumReleaseAgeExcludes = ["@types/bun", "typescript"]

Para mais detalhes veja Minimum release age na documentação de install.

bun run ​

O comando bun run pode ser configurado na seção [run]. Isso se aplica ao comando bun run e ao comando bun ao executar um arquivo ou executável ou script.

Atualmente, bunfig.toml é carregado automaticamente apenas para bun run em um projeto local (não verifica por um .bunfig.toml global).

run.shell - usa o shell do sistema ou o shell do Bun ​

O shell para usar ao executar scripts package.json via bun run ou bun. No Windows, o padrão é "bun" e em outras plataformas o padrão é "system".

Para sempre usar o shell do sistema em vez do shell do Bun (comportamento padrão a menos que Windows):

bunfig.toml
toml
[run]
# padrão fora do Windows
shell = "system"

Para sempre usar o shell do Bun em vez do shell do sistema:

bunfig.toml
toml
[run]
# padrão no Windows
shell = "bun"

run.bun - auto alias node para bun ​

Quando true, isso prepende $PATH com um symlink node que aponta para o binário bun para todos os scripts ou executáveis invocados por bun run ou bun.

Isso significa que se você tiver um script que executa node, ele executará bun em vez disso, sem precisar mudar seu script. Isso funciona recursivamente, então se seu script executa outro script que executa node, ele também executará bun em vez disso. Isso se aplica a shebangs também, então se você tiver um script com um shebang que aponta para node, ele executará bun em vez disso.

Por padrão, isso está ativado se node não estiver no seu $PATH.

bunfig.toml
toml
[run]
# equivalente a `bun --bun` para todos os comandos `bun run`
bun = true

Você pode testar isso executando:

sh
bun --bun which node # /path/to/bun
bun which node # /path/to/node

Esta opção é equivalente a prefixar todos os comandos bun run com --bun:

sh
bun --bun run dev
bun --bun dev
bun run --bun dev

Se definido como false, isso desativará o symlink node.

run.silent - suprime reportar o comando sendo executado ​

Quando true, suprime a saída do comando sendo executado por bun run ou bun.

bunfig.toml
toml
[run]
silent = true

Sem esta opção, o comando sendo executado será impresso no console:

sh
bun run dev
echo "Running \"dev\"..."
txt
Running "dev"...

Com esta opção, o comando sendo executado não será impresso no console:

sh
bun run dev
txt
Running "dev"...

Isso é equivalente a passar --silent para todos os comandos bun run:

sh
bun --silent run dev
bun --silent dev
bun run --silent dev

Bun by www.bunjs.com.cn edit