Vamos aprender mais sobre TypeScript, Domain-Driven Design, Boas práticas, Tecnologia, Qualidade de Código, DevOps, Carreira, Dicas e muitos outros temas no site Coder Arena.
Este projeto foi criado para demonstrar o uso do novo recurso do Github (ainda em versão beta), o Github Codespaces.
O projeto foi criado com base no typescript-simple-starter.
VOCÊ PODE CONFERIR O VÍDEO COMPLETO AQUI.
O projeto já começa com os principais scripts necessários.
Este script dispara a verificação de estilo de código com ESLint.
npm run lintEste script aplica as formatações/correções necessárias de acordo com as definições de Lint no projeto.
npm run formatEste script irá "transpilar" seu código TypeScript para JavaScript. Além disso, quando esse script é executado, um anterior prebuild é disparado para remover os arquivos anteriores localizados na pasta dist.
npm run buildPara atuar no modo watch, você pode usar o script abaixo, assim não precisa executar esse comando exaustivamente.
npm run build:watchPara executar a aplicação, assim como no comando anterior, você possui duas opções, sendo elas:
npm run starte
npm run start:watchA diferença entre os dois comandos, é que no primeiro a aplicação é executada utilizando diretamente o node. Já o segundo é executado em modo watch com a ferramenta Nodemon.
Nota:
Esse comando faz um casamento perfeito com o npm run build:watch no ambiente de desenvolvimento.
Em uma aba do terminal você executa o build:watch e na outra o start:watch, assim sempre que fizer uma alteração no código o servidor será atualizado automaticamente.
Os testes dependem muito das preferências do desenvolvedor, por isso, neste projeto inicial não há uma configuração de testes.
Fica a sua escolha 🚀
Existe uma configuração para uso de aliases no projeto, imagine uma importação como mostrado abaixo.
import { Entity } from '../../../../core/domain';Esse tipo de importação não trás nenhuma semântica e prejudica muito a localização dos arquivos, além de ser esteticamente feia.
Para resolver esse problema podemos usar a configuração de paths no TypeScript, para isso basta adicionar a definição no arquivo tsconfig.json. Com isso a importação anterior poderia ser algo como:
import { Entity } from '@app/core/domain';Isso é muito melhor, certo?
O problema dessa abordagem é que isso não funciona com JavaScript, ou seja, assim que o código for "transpilado" essa importação irá quebrar.
Para que isso não aconteça o projeto conta com a configuração do Module Alias que pode ser encontrada no arquivo package.json.
Você pode customizar da forma que preferir, o limite é a sua criatividade 😃
Existem diversas formas de usar variáveis de ambiente com Node.JS, mas preferi deixar isso ao seu critério, para que você possa usá-lo com ferramentas como DotEnv, CrossEnv ou até mesmo na sua configuração de docker-compose.
Esse projeto não está configurado para executar com Docker, mas fazê-lo é incrivelmente simples.
Esse projeto tem como objetivo ser o mais simples possível, por isso não adicionei nenhuma definição de Dockerfile ou de ambiente de execução.
A minha recomendação é concentrar todos os arquivos no projeto no diretório src, e dentro dele você pode organizar da forma que for mais conveniente.
Um grande abraço 🤗