yarn add express dotenv sequelize sqlite3 cors
2. Dependências de Desenvolvimento
yarn add -D nodemon sequelize-cli sucrase cross-env
yarn add -D jest supertest @sucrase/jest-plugin @types/jest
4. Confirgurar o nodemon criando o nodemon.json
{
"execMap" : {
"js" : " node -r sucrase/register -r dotenv/config"
}
}
5. Configurar o sequelize criando o .sequelizerc
const { resolve } = require ( 'path' ) ;
module . exports = {
'config' : resolve ( __dirname , 'src' , 'config' , 'database.js' ) ,
'models-path' : resolve ( __dirname , 'src' , 'app' , 'models' ) ,
'migrations-path' : resolve ( __dirname , 'src' , 'database' , 'migrations' ) ,
'seeders-path' : resolve ( __dirname , 'src' , 'database' , 'seeds' )
} ;
yarn jest --init
Would you like to use Jest when running "test" script in "package.json"? - YES
Would you like to use Typescript for the configuration file? › (y/N) No
Choose the test environment that will be used for testing: NODE
Do you want Jest to add coverage reports? › (y/N) NO
Which provider should be used to instrument code for coverage? › V8
Automatically clear mock calls and instances between every test? YES
7. Ajustar configurações no jest.config.js
transform : { '.(js|jsx|ts|tsx)' : '@sucrase/jest-plugin' } ,
collectCoverageFrom : [ "src/app/**" ] ,
coverageDirectory : "__tests__/coverage" ,
testMatch : [
"**/__tests__/**/*.test.js?(x)" ,
] ,
8. Criar o arquivo .env.test
DB_DIALECT=sqlite
DB_URL="./__tests__/database.sqlite"
9. Criar a pasta src/config criar a configuração do database
require ( "dotenv" ) . config ( {
path : process . env . NODE_ENV === 'test' ? '.env.test' : '.env' ,
} ) ;
module . exports = {
dialect : process . env . DB_DIALECT || 'postgres' ,
host : process . env . DB_HOST ,
username : process . env . DB_USER ,
password : process . env . DB_PASSWORD ,
database : process . env . DB_DATABASE ,
storage : process . env . DB_URL ,
define : {
timestamps : true ,
underscored : true ,
underscoredAll : true ,
} ,
dialectOptions : {
ssl : {
require : true ,
rejectUnauthorized : false ,
} ,
} ,
} ;
10. Criar o arquivo do DATABASE em src/database/index.js
import Sequelize from 'sequelize' ;
import config from '../config/database' ;
const models = [ ] ;
class Database {
constructor ( ) {
this . init ( ) ;
}
init ( ) {
this . connection = new Sequelize ( config ) ;
models
. map ( model => model . init ( this . connection ) )
. map ( model => model . associate && model . associate ( this . connection . models ) ) ;
}
}
export default new Database ( ) ;
11. Criar a pasta src e criar a estrutura do servidor
import express from 'express' ;
import dotenv from 'dotenv' ;
import './database/index' ;
class App {
constructor ( ) {
this . server = express ( ) ;
this . config ( ) ;
this . middlewares ( ) ;
this . routers ( ) ;
}
config ( ) {
this . server . use ( express . json ( ) ) ;
dotenv . config ( {
path : process . env . NODE_ENV === 'test' ? '.env.test' : '.env' ,
} ) ;
}
middlewares ( ) {
}
routers ( ) {
}
}
export default new App ( ) . server ;
import app from './app' ;
app . listen ( process . env . PORT , ( ) => {
console . info ( `Server is up and running. Port ${ process . env . PORT } .` ) ;
} ) ;
{
"dev" : " nodemon ./src/server.js" ,
}