Este post é parte do curso de criação de uma API Restful com Node.js, Express, Typescript, TypeORM, Postgres, Redis, Docker, e muito mais.
Apesar de podermos usar o tsc
para gerar o build de uma aplicação Typescript, em nossa aplicação usaremos o Babel para converter o código Typescript em Javascript, considerando a versão do Node.js instalado em nosso PC.
Pacotes a serem instalados:
# Babel
@babel/cli
@babel/core
@babel/node
# Presets
@babel/preset-env
@babel/preset-typescript
# Plugins
@babel/plugin-proposal-decorators
@babel/plugin-proposal-class-properties
babel-plugin-module-resolver
babel-plugin-transform-typescript-metadata
Instalação:
yarn add -D @babel/cli @babel/core @babel/node @babel/preset-env @babel/preset-typescript @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties babel-plugin-module-resolver babel-plugin-transform-typescript-metadata
Após a instalação crie o arquivo babel.config.js
na pasta raiz do projeto com o seguinte conteúdo:
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@babel/preset-typescript'
],
plugins: [
[
'module-resolver',
{
alias: {
'@modules': './src/modules',
'@config': './src/config',
'@shared': './src/shared'
}
}
],
'babel-plugin-transform-typescript-metadata',
['@babel/plugin-proposal-decorators', { legacy: true }],
['@babel/plugin-proposal-class-properties', { loose: true }]
]
}
No arquivo package.json
, criar o script para geração do build da aplicação:
"build": "babel src --extensions \".js,.ts\" --out-dir dist --copy-files"
Rodar o script:
yarn build
Se tudo deu certo, estamos com o build criado na pasta dist
, com a mesma estrutura interna da pasta src
, porém com os arquivos convertidos para .js
e prontos para serem disponibilizados em produção no servidor.
Podemos executar a aplicação final ainda em ambiente de desenvolvimento para validação do funcionamento.
Para isso, teremos que ajustar provisoriamente o arquivo ormconfig.json
, alterando os paths e extensões nas configurações do TypeORM.
Rodar a aplicação:
node dist/shared/http/server.js