expressots-cli icon indicating copy to clipboard operation
expressots-cli copied to clipboard

Use the SWC transpiler to improve performance

Open joaoneto opened this issue 2 years ago • 3 comments

Hello everyone, I would like to suggest an improvement that can be interesting for our project: the use of the transpiler SWC, which is a tool written in rust and that has been standing out in the market, being adopted by Next.js to optimize the developer experience and the performance of build, making it much faster.

According to the official website of SWC, it is 20x faster than Babel on a single thread and 70x faster on four cores. In addition, it supports several features of modern JavaScript, such as arrow functions, optional chaining, TypeScript and more.

The changes that I propose are the following:

  • Add a command option, for example: --experimental, --use-swc, so that the template uses the build with SWC
  • Change or create a template so that the npm scripts of the package.json use the experimental build

This change in the package.json already depends on the solution of issue #15, which is in progress.

Thank you for your attention!

joaoneto avatar Aug 21 '23 02:08 joaoneto

This suggestion is on stage 2, which means, is waiting for a POC. Excellent. Let's continue the discussion in the issue #15

rsaz avatar Aug 21 '23 07:08 rsaz

This suggestion is on stage 2, which means, is waiting for a POC. Excellent. Let's continue the discussion in the issue #15

@rsaz I prepared a functional POC, which adds an --experimental flag. To test this POC:

  • clone feat/experimetal-transpile-with-swc branch from fork: https://github.com/joaoneto/expressots-cli/tree/feat/experimetal-transpile-with-swc
  • maybe good idea unlink (or uninstall) first ie.: npm unlink @expressots/cli
  • enter in brand new dir expressots-cli
  • some use cases:
./bin/cli.js new expressots-demo -p yarn -d ./ -t opinionated
./bin/cli.js new expressots-demo -p yarn -d ./ -t non-opinionated
./bin/cli.js new expressots-demo --experimental -p yarn -d ./ -t opinionated
./bin/cli.js new expressots-demo --experimental -p yarn -d ./ -t non-opinionated

joaoneto avatar Aug 21 '23 18:08 joaoneto

Discussion approved on #15

To be implemented here in this issue

rsaz avatar Aug 21 '23 21:08 rsaz