Como reduzir o tempo de instalação de pacotes de 28 minutos para 47 segundos com Bun
2026年5月8日
0
Computing/SoftwareComments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
No ambiente Node.js, ao lutar com um emaranhado de dependências, muitas vezes é difícil saber se você está escrevendo código ou apenas assistindo a uma barra de progresso de instalação. O Bun vai além de ser apenas um runtime rápido; ele prepara um terreno excelente para colaborar com agentes de IA. Além da razão superficial da velocidade, vamos discutir métodos práticos de migração e design de estrutura.
O Bun foi reescrito do zero na linguagem Zig. Graças a isso, a instalação de pacotes é esmagadoramente mais rápida do que no Node.js v22. No entanto, se você tentar misturar o Bun mantendo o package-lock.json existente, o lockfile ficará corrompido e sua máquina de deploy começará a apresentar erros. Nesses casos, não tente uma coexistência desajeitada; é melhor reconstruir o cenário do zero.
Primeiro, apague corajosamente o node_modules e o lockfile existente. Em seguida, execute bun install --frozen-lockfile no terminal para gerar o bun.lockb, que é o lockfile binário exclusivo do Bun. Para bibliotecas que usam add-ons em C++ e lançam erros de compilação, como o bcrypt, é melhor para a sua saúde mental trocá-las pelo bcryptjs ou usar a API nativa do Bun, bun:sqlite. Em um projeto com mais de 1.800 dependências, a experiência de reduzir uma tarefa que levava 28 minutos para apenas 47 segundos é bastante empolgante.
Se você entregar um arquivo de milhares de linhas para um agente de IA baseado em LLM, ele rapidamente se perderá e começará a dizer bobagens. Como o I/O de arquivos do Bun é extremamente rápido, quase não há perda de desempenho mesmo se você dividir os arquivos em partes bem pequenas. Para aumentar a precisão quando o agente modifica o código, uma estrutura que mantém cada arquivo com menos de 100 linhas é vantajosa.
Eu crio pastas com funções completamente separadas dentro do projeto, como src/agents e src/tools. Então, combino Bun.serve e Bun.file para construir um gateway que permite manipular apenas diretórios específicos. Validar o caminho com targetPath.startsWith pode evitar acidentes onde o agente vasculha as configurações do sistema do meu MacBook. É uma estrutura que garante segurança e economiza custos de tokens.
Se um agente de IA chama uma ferramenta e a resposta demora para chegar, a experiência do usuário é arruinada. O Express é lento quando o volume de requisições aumenta porque ele busca rotas sequencialmente. Por outro lado, o Hono usa o algoritmo Trie para encontrar o caminho instantaneamente.
Na prática, combinar Bun e Hono faz com que o rendimento de requisições por segundo (RPS) suba para cerca de 41.800. Isso é mais de 3 vezes mais rápido que o Express. Comece com bun add hono e leia as variáveis de ambiente diretamente com Bun.env. Se você adicionar a API de WebSocket de alta performance do Bun, poderá manter a latência de resposta em tempo real no nível de 27ms. Você não precisará ver a IA esperando ociosamente por causa de um servidor lento.
Não adianta apenas eu usar o Bun. Todos os membros da equipe devem usar o mesmo ambiente para evitar acidentes na produção. Coloque um arquivo .bunfig.toml na raiz e fixe as informações do registro privado ou as opções do lockfile. Isso reduz o tempo que novos membros da equipe perdem com erros de configuração.
Ao fazer o deploy, preste atenção ao tamanho da imagem Docker. Use a imagem oven/bun:1 como base e utilize a opção bun build --compile para transformar o código-fonte em um único arquivo executável. Se você extrair apenas este arquivo e colocá-lo em uma imagem distroless, a imagem do Node.js que passava de 1GB será reduzida para menos de 200MB. Com o tamanho da imagem menor, os custos de infraestrutura em nuvem caem cerca de 40%, então não há motivo para não fazer isso.