19 pontos por xguru 2024-06-03 | 7 comentários | Compartilhar no WhatsApp

Runner de testes do Node.js

  • O Node.js agora inclui um runner de testes nativo
  • É possível escrever testes importando o módulo node:test no arquivo de teste
  • Executar um único teste: node --test tests/math.test.js
  • Detecta e executa automaticamente os arquivos de teste
  • É possível validar testes usando o módulo assert integrado
  • É possível agrupar e gerenciar testes relacionados com suítes de teste e hooks

Mocking nativo do Node.js

  • O Node.js agora inclui recursos nativos de mocking
  • É possível usar diretamente no Node.js recursos de mocking oferecidos por outros frameworks de teste
  • É possível implementar mocking usando o método mock do módulo node:test

Cobertura de testes nativa do Node.js

  • A cobertura de testes ajuda a entender o alcance dos testes sobre o código-fonte
  • A partir do Node.js 20, há suporte nativo a cobertura de testes
  • É possível gerar dados de cobertura de testes com a flag --experimental-coverage
  • Os relatórios de cobertura permitem identificar áreas do código que não foram testadas

Modo watch do Node.js

  • O modo watch detecta alterações em arquivos em tempo real e reexecuta automaticamente o script
  • Não é necessário depender de ferramentas externas como o Nodemon
  • É possível detectar mudanças em arquivos e executar scripts automaticamente com a flag --watch

Corepack do Node.js

  • O Corepack atua como uma ponte entre o projeto e o gerenciador de pacotes
  • Você define o gerenciador de pacotes a ser usado no projeto, e o Corepack faz esse gerenciamento automaticamente
  • É possível ativar o Corepack com o comando corepack enable

Loader de .env do Node.js

  • A partir do Node.js 20, há suporte nativo para carregar variáveis de ambiente a partir de arquivos .env
  • É possível carregar um arquivo .env com a flag --env-file
  • É possível carregar vários arquivos .env para configurar diferentes ambientes

Suporte a import.meta no Node.js

  • O Node.js v20.11.0 e v21.2.0 oferecem suporte a import.meta.filename e import.meta.dirname
  • Isso facilita obter o caminho do arquivo e o nome do diretório

Timer Promises nativos do Node.js

  • Desde o Node.js v15, é possível usar timers no formato de Promise
  • É possível usar setTimeout e setInterval como Promises para escrever código assíncrono de forma mais concisa

Módulo de permissões do Node.js

  • Recurso experimental para controlar o acesso a recursos em aplicações Node.js
  • Com a flag --experimental-permission, é possível restringir o acesso ao sistema de arquivos, rede, variáveis de ambiente etc.

Módulo de policy do Node.js

  • Recurso de segurança para impedir o carregamento de código malicioso
  • Com a flag --experimental-policy, é possível especificar um arquivo de policy e controlar o carregamento de módulos

7 comentários

 
cometkim 2024-06-05

Não há menção ao node --run. Nas versões mais recentes, é possível executar scripts sem depender do NPM. A inicialização fica dezenas de vezes mais rápida.

 
tsboard 2024-06-03

Ao fazer o projeto tsboard desta vez, comparei bastante com o runtime Bun de várias formas, e o Node.js é realmente ótimo em quase tudo, mas ainda sinto falta de duas coisas: (1) suporte a TypeScript e (2) velocidade. Acho realmente impressionante a compatibilidade e o fato de ele não ser particularmente exigente quanto a recursos de hardware.

Se você estiver considerando TypeScript, velocidade de execução e afins, vale a pena dar uma olhada no runtime Bun também...!

 
[Este comentário foi ocultado.]
 
edunga1 2024-06-03

Uau~ no texto original também mencionam o Jest.

 
edunga1 2024-06-05

Tentei migrar em um projeto pequeno de jest -> node.js, mas a compatibilidade com funções de asserção é muito fraca, então achei bem ruim :(

 
kandk 2024-06-03

Estão adotando as tendências mais recentes incrivelmente rápido..

 
dylanju 2024-06-03

E mocking nativo também!