Open scarf005 opened 1 year ago
I concur with the suggestion of introducing a --verbose mode. For now, to track the duration, you can insert the following line within the Denoify distribution:
console.log(`Duration: ${Date.now() - start}`);
Since it's transpiled to ES2021, the JavaScript remains relatively readable.
Regarding potential performance bottlenecks, I believe the issue might be located here: denoifySingleFile.ts
For enhancing performance and flexibility, I should transition to using grubber. This would offer a superior alternative to regular expressions without resorting to an AST, which might introduce frequent breaking changes.
I see. Also, would it be possible for denoify to transform files concurrently? Using asynchronous fs functions with Promise.all
could improve performance if IO also bottlenecks.
it would be great to have a
--verbose
debug output so it would be possible to profile bottlenecks when denoifying node projects. for example, it took 17~25 seconds to convert this 800 loc program with 2 dependencies, which i believe to be bottlenecked by my configuration.Details
``` $ tokei src/* =============================================================================== Language Files Lines Code Comments Blanks =============================================================================== TypeScript 5 789 684 19 86 =============================================================================== Total 5 789 684 19 86 =============================================================================== ``` ```sh $ time pnpm denoify > ts-rest-hono@0.0.11 denoify /home/scarf/repo/etc/one-time-contribution/ts-rest-hono > rimraf deno_dist && denoify && rimraf --glob 'deno_dist/**/*.test.ts' Denoify is reading sources files from src Configurations from /home/scarf/repo/etc/one-time-contribution/ts-rest-hono/denoify.config.js are used Deno distribution will be generated at deno_dist ________________________________________________________ Executed in 17.93 secs fish external usr time 1.74 secs 260.00 micros 1.74 secs sys time 0.34 secs 96.00 micros 0.34 secs ``` ```js $ cat denoify.config.js // @ts-check /** @type { import('denoify/lib/config/parseParams').DenoifyParams } */ const config = { out: 'deno_dist', index: './src/index.ts', ports: { zod: 'https://deno.land/x/zod/mod.ts', hono: 'https://deno.land/x/hono/mod.ts', }, } module.exports = config ```