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
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.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...!
Uau~ no texto original também mencionam o Jest.
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 :(Estão adotando as tendências mais recentes incrivelmente rápido..
E mocking nativo também!