/apiNest

Primary LanguageTypeScript

Nest Logo

Tarefa Desafio API Rst NestJs - Parte 2

Commitizen friendly

code style: prettier

Conventional Commits

GitHub issues

GitHub pull requests

GitHub stars

GitHub forks

GitHub contributors

GitHub license

GitHub code size in bytes

GitHub repo size

Table of contents

Definition of done

Equipe de FRONT e BACK elaborar uma api rest com NEST desenvolvendo endpoints para o crud.

  • Melhorias em testes unitários
  • Utilização de variáveis de ambiente
  • Melhorias na documentação do Swagger
  • Uso de migrations e seeds
  • Relatório de cobertura de testes
  • Commits e versionamento semantico com hooks
  • Integração de 2 microserviços utilizando RabbitMQ

EXTRAS:

  • Versionamento Semântico
  • Compodoc
  • Lint-Staged
  • Testes de integração manuais
  • Documentação Swagger com versão automática
  • Relacionamentos entre entidades com Seeding e onDelete Cascade

Comandos utilizados em sequência

# Instalar globalemnte o CLI
$ npm i @nestjs/cli

# Criar projeto novo
$ nest new nest-api

# Entrar na pasta do projeto
$ cd nest-api

# Iniciar o projeto com comando --watch para recompilar
$ npm run start:dev 

# Comando que gera toda estrutura de um entity
$ nest g resource

# Código de criação de migrations do banco de dados
$ npm run typeorm migration:create -- --n create-product-table

# Instalação de pacotes para ORM
$ npm run typeorm migration:run

# Instalacao do PG
$ npm install pg --save

# Instalação do swagger
$ npm install --save @nestjs/swagger swagger swagger-ui-express class-validator

Lições aprendidas

# Ao rodar o projeto em ambiente totalmente linux, preciso alterar a permissão do arquivo entrypoint somente 1 vez
$ chmod +x .docker/entrypoint.sh quando ele nao achar o arquivo

# Veja todas as possibilidades do comando nest
$ comando nest mostra os comandos possiveis como resource

# Ao tentar criar um migration  e estiver dando permissão negada, melhor recriar a pasta node_modules dentro do ambiente linux
$ rm -rf node_modules / npm cache clear / npm install

# ALEM DE RODAR O DOCKER, PRECISA RODAR O COMANDO PARA TESTAR A API
$ npm run start:dev

Conteúdo

Commitizen

commitizen is a command line utility that makes it easier to create commit messages following the conventional commit format specification.

Use git cz instead of git commit to use commitizen.

Add and commit with Commitizen

Configuration file: .czrc.


Commitlint

commitlint checks if your commit messages meet the conventional commit format.

Configuration file: .commitlintrc.

In general the pattern mostly looks like this:

type(scope?): subject  #scope is optional

Are you a good commitizen ?


ESLint

ESLint is a fully pluggable tool for identifying and reporting on patterns in JavaScript.

Configuration file: .eslintrc.js.

For more configuration options and details, see the configuration docs.


Husky

Husky is a package that helps you create Git hooks easily.

Configuration file: .huskyrc.


Prettier

Prettier is an opinionated code formatter.

Configuration file: .prettierrc.
Ignore file: .prettierignore.

For more configuration options and details, see the configuration docs.


Running the app

development

npm run start

watch mode

npm run start:dev

production mode

npm run start:prod

Code scaffolding

Run nest generate|g <schematic> <name> [options] to generate a new Nest Element.


Build

Run npm run build to build the project. The build artifacts will be stored in the dist/ directory.


Test

unit tests

npm run test

e2e tests

npm run test:e2e

test coverage

npm run test:cov