O intuito dessa série de artigos é mostrar na prática como criar e estruturar inicialmente uma aplicação Node.js o mais desacoplado possível com typescript usando conceitos de S.O.L.I.D e Clean Architecture. Ao final teremos uma api onde poderemos mudar facilmente por exemplo de express para fastify, prisma para typeorm, postgresql para mongoDb mudando apenas a variável de ambiente. Acompanhe essa série e verás.
Nesse primeiro artigo vamos iniciar o projeto e configurar o typescript.
Criando o projeto:
Vamos iniciar o projeto usando o comando abaixo que irá gerar o arquivo package.json
. Em qual local vai ficar o projeto na sua máquina é de sua escolha.
yarn init -y
Instalando como devDependencies as seguintes bibliotecas:
yarn add @types/node tsup tsx typescript -D
Qual a utilidade de cada pacote:
@types/node
: biblioteca que fornece definições de tipos (TypeScript) para os módulos nativos do Node.js. Ela é usada em projetos TypeScript quando se deseja obter suporte para a verificação de tipos.
tsx
: biblioteca utilizada para executar arquivos TypeScript (com extensão .ts) diretamente no Node.js, sem a necessidade de compilar previamente os arquivos para JavaScript (extensão .js). O pacote tsx foi aprimorado com esbuild
para executar arquivos TypeScript e ESM.
tsup
: é uma ferramenta de empacotamento (bundling) e compilação para projetos TypeScript. Ela facilita a criação de pacotes JavaScript a partir do código TypeScript e é uma alternativa mais simples e minimalista comparada a ferramentas mais complexas de empacotamento, como o Webpack e Rollup.
typescript
: é uma linguagem(ou preset) para JavaScript. O TypeScript adiciona tipos opcionais ao JavaScript que oferecem suporte a ferramentas para aplicativos JavaScript de grande escala para qualquer navegador, para qualquer host, em qualquer sistema operacional. O TypeScript é compilado para JavaScript legível e baseado em padrões.
Configurando o typescript:
- Crie na raiz do projeto um arquivo
tsconfig.json
- Adcione ao arquivo o seguinte código
{
"compilerOptions": {
"target": "es2017",
"strictNullChecks": true,
"module": "commonjs",
"moduleResolution": "node",
"baseUrl": "./src",
"rootDir": "./",
"outDir": "./dist",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"strict": true,
}
}
Crie na raiz do projeto o arquivo .gitignore
com o seguinte conteúdo:
node_modules/
No final desse primeiro artigo o projeto deverá ter a estrutura abaixo:
Nesse artigo ficamos por aqui. No próximo artigo vamos codar dois server um com fastify e outro com express e alternar entre um e outro mudando apenas uma variável de ambiente.
Top comments (0)