Como Configurar um Projeto Node.js com TypeScript e Express
Configurar um projeto Node.js com TypeScript e Express dá à sua aplicação estrutura, escalabilidade e clareza. Neste guia, vamos percorrer passo a passo a inicialização do seu projeto Node.js, integrando TypeScript, Express e adicionando ferramentas essenciais para desenvolvedores.
Principais Pontos
- Configure rapidamente um projeto Node.js robusto com TypeScript e Express.
- Integre ferramentas essenciais: ESLint, Prettier, Jest e nodemon para um desenvolvimento tranquilo.
Passo 1: Inicialize Seu Projeto Node.js
Crie sua pasta de projeto e inicialize o npm:
mkdir my-node-project
cd my-node-project
npm init -y
Isso gera um package.json. Em seguida, crie um .gitignore para excluir módulos node e arquivos de compilação:
node_modules
dist
Passo 2: Adicione TypeScript
Instale o TypeScript e dependências relacionadas:
npm install --save-dev typescript ts-node @types/node
Crie sua configuração TypeScript com:
npx tsc --init
Ajuste seu tsconfig.json para ficar assim:
{
"compilerOptions": {
"target": "ES2016",
"module": "commonjs",
"rootDir": "./src",
"outDir": "./dist",
"esModuleInterop": true,
"strict": true,
"skipLibCheck": true
}
}
Crie a pasta src para seu código:
mkdir src
Passo 3: Configure o Express
Instale o Express e seus tipos:
npm install express
npm install --save-dev @types/express
Crie um servidor básico em src/index.ts:
import express, { Application, Request, Response } from 'express';
const app: Application = express();
const PORT = 3000;
app.get('/', (req: Request, res: Response) => {
res.send('Hello, TypeScript + Express!');
});
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
Execute-o usando:
npx ts-node src/index.ts
Passo 4: Configuração do ESLint e Prettier
Instale ESLint, Prettier e plugins:
npm install --save-dev eslint prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-prettier eslint-config-prettier
Configure o ESLint com .eslintrc.json:
{
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint", "prettier"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"env": { "node": true, "es6": true, "jest": true }
}
Crie .prettierrc.json:
{
"semi": true,
"singleQuote": true,
"trailingComma": "all"
}
Atualize seus scripts no package.json:
"scripts": {
"lint": "eslint 'src/**/*.{ts,js}'",
"format": "prettier --write ."
}
Passo 5: Jest para Testes
Adicione Jest e suporte a TypeScript:
npm install --save-dev jest ts-jest @types/jest
npx ts-jest config:init
Escreva um teste simples src/__tests__/sum.test.ts:
import { sum } from '../sum';
test('sum works', () => {
expect(sum(1, 2)).toBe(3);
});
Com o módulo correspondente:
export function sum(a: number, b: number): number {
return a + b;
}
Atualize o package.json:
"scripts": {
"test": "jest --watch"
}
Passo 6: Nodemon para Desenvolvimento
Instale e configure o nodemon:
npm install --save-dev nodemon
Adicione nodemon.json:
{
"watch": ["src"],
"ext": "ts,json",
"ignore": ["src/**/*.test.ts"],
"exec": "ts-node ./src/index.ts"
}
Script para ambiente de desenvolvimento no package.json:
"scripts": {
"dev": "nodemon"
}
Execute npm run dev para recarregar automaticamente seu servidor durante o desenvolvimento.
Melhores Práticas
- Use pastas separadas (
srcpara código,distpara saídas de compilação). - Faça commit apenas de arquivos fonte, não de código compilado (
dist) ou módulos node. - Execute
npm run lintenpm run formatcom frequência. - Compile o código (
npm run build) antes da implantação e, em seguida, inicie comnpm start.
Perguntas Frequentes
Sim. Simplesmente substitua os comandos npm pelos comandos equivalentes do yarn ou pnpm.
Não. Sempre compile seu projeto com `tsc` e execute JavaScript da pasta `dist` em produção.
Embora o Jest seja opcional, ele melhora significativamente a confiabilidade e a qualidade do código, tornando-o valioso mesmo para projetos mais simples.