substituir pipeline babel por tsx + esbuild (#91)#421
Conversation
| ], | ||
| raw: true, | ||
| }) | ||
| .then(resultado => { |
There was a problem hiding this comment.
Fazer o uso de async/await ao invés de .then.
|
|
||
| export const getProximoNumeroTomboEndPoint = (request, response, next) => { | ||
| getProximoNumeroTombo() | ||
| .then(proximoNumero => { |
There was a problem hiding this comment.
Fazer o uso de async/await com try/catch ao invés de then/catch
| const callback = transaction => | ||
| Promise.resolve() | ||
| .then(() => { | ||
| if (isNovoTombo) { |
There was a problem hiding this comment.
Esta lógica aqui não deveria existir, você deve aceitar o valor que o frontend está enviando, e não gerar outro aqui. O cálculo do próximo número acontece na outra rota e é devolvido para o frontend, o valor que é recebido na requisição deve ser usado para inserir o tombo.
|
|
||
| private async importMigrationModule(name: string): Promise<{ run: (knex: Knex) => Promise<void> }> { | ||
| const filePathWithoutExtension = path.join(this.migrationsPath, name) | ||
| const isAbsolute = path.isAbsolute(this.migrationsPath) |
There was a problem hiding this comment.
Qual problema existia aqui? Por que foi necessário esta alteração?
There was a problem hiding this comment.
Por algum motivo que eu não sei explicar, ele estava reclamando que não conseguia encontrar o caminho para fazer as migrações devido a windows ser \ e não /, dai para rodar na minha máquina eu alterei.
| getUltimoNumeroTombo, | ||
| ]); | ||
|
|
||
| app.route('/tombos/proximo_numero') |
There was a problem hiding this comment.
Esta rota precisa de autenticação.
| "nodemon": "3.1.10", | ||
| "npm-run-all": "4.1.5", | ||
| "rimraf": "6.1.2", | ||
| "tsx": "^4.21.0", |
There was a problem hiding this comment.
Por favor, usar a versão exata, sem o ^
| "babel-plugin-module-resolver": "5.0.2", | ||
| "chai": "6.2.0", | ||
| "chai-http": "^5.1.2", | ||
| "esbuild": "^0.28.0", |
There was a problem hiding this comment.
Usar a versão exata, sem o ^
| "build": "run-s clean build:app", | ||
| "build:app": "node build.mjs", | ||
| "start": "tsx --watch --env-file=.env src/index.js", | ||
| "build": "run-s build:app", |
There was a problem hiding this comment.
Uma vez que o script build só executa uma coisa, que nesse caso é executar build:app, você não precisa mais do build:app, você pode trazer o node build.mjs aqui para o script build
| // Prefere entrada CJS dos pacotes para evitar problemas de interop de default export | ||
| mainFields: ['main', 'module'], | ||
| // Dialetos opcionais do knex/sequelize não instalados no projeto | ||
| external: [ |
There was a problem hiding this comment.
Ao invés de colocar dependencias como externas, você pode simplesmente colocar a configuração bundle como false, e o esbuild vai se comportar semelhante ao babel, fazendo a compilação dos arquivos somente, sem a necessidade de configurar as bibliotecas externas.
…versões exata para o tsx e esbuild, funções de proximo numero usando async/await
| return null; | ||
| } | ||
|
|
||
| const getProximoNumeroTombo = async () => { |
There was a problem hiding this comment.
O código de número do tombo já foi para o branch development, não deveria estar neste pull request.
| // Limpa a pasta dist antes de gerar novo build | ||
| rmSync('dist', { recursive: true, force: true }) | ||
|
|
||
| await build({ |
There was a problem hiding this comment.
@JosueModesto eu baixei seu branch local e encontrei alguns problemas:
- Quando mudamos para
bundle: false, o único arquivo transpilado foi o.index.js, o restente não. Acredito que o que você precisa fazer é passar o valor deentryPointsusando glob. - Você precisa lembrar que temos arquivos de vários tipos, por exemplo,
.jse.ts,.ejs,.tsxe vários outros juntos, então precisamos transpilar todos eles, não somente arquivos.js.
There was a problem hiding this comment.
@edvaldoszy Eu fiz as mudanças subi o código porem ele esta dando erro e eu tentei consertar de várias formas mas não consegui, não sei o que faço, eu adicionei o valor do entryPoints com o glob pra .js,.ts e .tsx, com o .ejs o yarn build quebra, pelo o que o chat falou é o pq o esbuild é compilador de Java/TypeScript então ele não entende a sintaxe do .ejs, só que quando eu executo o docker compose up --build, ele não esta resolvendo as extensões, por estar com o bundle:false e esm, ele não resolve as extensões dos imports, e dai o build vai procurar os arquivos, ele procura por exemplo app e não app.js não encontra e quebra. E dai eu não sei o que fazer, já tentei fazer um plugin para ele adicionar as extensões mas não funcionou e eu realmente não sei o que fazer. Para ficar claro o docker compose up --build, ele builda tudo, quando vai subir o docker ele da este erro: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/hcf_api/app/dist/app' imported from /home/hcf_api/app/dist/index.js
…e arquivos, remove as alterações de tombo
O que foi feito
Substituição completa da pipeline Babel por tsx + esbuild, conforme issue #91.
Removido
@babel/cli,@babel/core,@babel/node,@babel/plugin-proposal-class-properties,@babel/preset-env,@babel/preset-react,@babel/preset-typescriptbabel-plugin-module-resolver,jiti,nodemon.babelrcAdicionado / Atualizado
esbuildadicionado emdevDependenciestsxmovido dedependenciesparadevDependenciesbuild.mjs: executa limpeza da pastadistviarmSynce gera bundle com esbuild (elimina necessidade derimrafe scriptclean)startatualizado paratsx --watch --env-file=.env src/index.jsbuild:appatualizado paranode build.mjseslint.config.mtsrenomeado paraeslint.config.mjs(remove dependência dejitino ESLint 9)Validação
yarn buildyarn lintyarn test27/27