Nesta aula, você vai criar um projeto completo para uma livraria, do zero, aplicando os conceitos de MVC, helpers, e autenticação que vimos nas aulas anteriores. Vamos também configurar o arquivo package.json adequadamente e aprender sobre devDependencies e dependencies.
package.json com scripts e dependências.Aqui está a estrutura de pastas que você vai criar:
bookstore/
│
├── src/
│ ├── config/
│ │ └── database.ts
│ ├── controllers/
│ │ ├── authController.ts
│ │ └── bookController.ts
│ ├── helpers/
│ │ └── validationHelper.ts
│ ├── models/
│ │ └── bookModel.ts
│ │ └── userModel.ts
│ ├── repositories/
│ │ └── bookRepository.ts
│ │ └── userRepository.ts
│ ├── routes/
│ │ ├── authRoutes.ts
│ │ └── bookRoutes.ts
│ ├── server.ts
│
├── package.json
├── tsconfig.json
└── jest.config.js
Dentro da pasta do projeto (bookstore), inicialize o npm e instale as dependências básicas:
npm init -y
npm install express pg dotenv
npm install --save-dev typescript jest @types/jest ts-jest supertest @types/express
express, pg (conexão com PostgreSQL), dotenv.jest para testes e typescript para tipagem.Aqui está um exemplo de como ficará o package.json com as dependências e devDependencies separadas:
{
"name": "bookstore",
"version": "1.0.0",
"scripts": {
"start": "node dist/server.js",
"dev": "ts-node-dev src/server.ts",
"test": "jest"
},
"dependencies": {
"express": "^4.17.1",
"pg": "^8.6.0",
"dotenv": "^10.0.0"
},
"devDependencies": {
"typescript": "^4.5.2",
"jest": "^27.2.5",
"@types/jest": "^27.0.2",
"ts-jest": "^27.0.5",
"supertest": "^6.1.6",
"@types/express": "^4.17.12",
"ts-node-dev": "^1.1.8"
}
}
ts-node-dev, que reinicia o servidor sempre que há uma mudança no código.