AluraFlix - Estruturando o projeto

Olá, meu nome é Gabriel Amorim e estou escrevendo esse artigo para acompanhar a segunda edição do Alura Challenges. Dessa vez a edição está sendo voltada para o back-end. Trata-se da construção de uma API para a consulta de vídeos. Irei postar os artigos conforme a realização dos desafios, e o post de hoje é voltado para a criação e estruturação inicial do projeto.

O desafio deixou livre as escolhas referentes a linguagem e tecnologias. Portanto decidi utilizar Node.js e TypeScript.

Sem muitas delongas, vamos ao código!

Iniciando o projeto

Vamos começar criando a pasta do projeto pelo terminal:

$ mkdir alura-flix

Entre na pasta criada:

$ cd alura-flix

Inicie o projeto com o comando:

$ yarn init -y

Isso criará o arquivo package.json que é o ponto de partida de qualquer projeto em NodeJS. Ele é responsável por descrever o seu projeto, informar as engines (versão do node e do npm), url do repositório, versão do projeto, dependências de produção e de desenvolvimento dentre outras coisas.

Para saber mais sobre o package.json acesse: https://gabrieluizramos.com.br/entendendo-o-package-json

O próximo passo é instalar o express:

$ yarn add express

Express.js é um micro-framework para aplicações web para Node.js, lançado como software livre e de código aberto sob a Licença MIT. É feito para otimizar a construção de aplicações web e API's. É um dos mais populares frameworks para servidores em Node.js.

Criar pasta na raiz chamada "src" que irá conter os arquivos do projeto.

Criar o arquivo server.ts que irá definir a porta que será escutada. O básico é:

import express from 'express';

const app = express();

app.listen(3333, () => console.log("Server is running"));

Qualquer arquivo pode ser executado pelo terminal utilizado o comando:

$ node nome_do_arquivo.js

Porém como o node não entende a sintaxe de import é necessário haver um tradutor para converter typescript em javascript, para isso é necessário instalar o typescript:

$ yarn add typescript -D

E agora inicializamos o typescript dentro da aplicação:

$ yarn tsc --init

Será criado um arquivo tsconfig.json e nele será possível configurar o typescript de acordo com a sua necessidade.

Agora é necessário instalar o ts-node-dev que irá traduzir o typescript para javascript:

$ yarn add ts-node-dev -D

Agora adicionamos um script no package.json:

"scripts": {
    "dev": "ts-node-dev src/server.ts"
},

Isso faz com que ao rodar o comando $ yarn dev o ts-node-dev execute o nosso arquivo server.ts já o traduzindo para javascript.

Caso haja alguma aplicação rodando em node é só utilizar o comando:

$ pkill node

No script em que falei anteriormente, é possível passar algumas configurações como o --transpile-only para não fazer a checagem de tipagem já que o próprio VSCode vai acusar o erro. O --respawn serve para que o ts-node-dev fique observando alterações do código, para fazer o recarregamento automático da aplicação. A próxima flag é o --ignore-watch node_modules fazendo com que a pasta node_modules seja ignorada. Ao final o script ficará assim:

"scripts": {
    "dev": "ts-node-dev --transpile-only --respawn --ignore-watch node_modules src/server.ts"
},

Com isso temos a estrutura inicial do nosso projeto. Nos próximos posts mostrarei como configurar o eslint e o prettier para manter um estilo de código, como configurar o typeorm e mongodb na nossa aplicação. Te vejo em breve! Obrigado pela leitura até aqui.

72