Use the SWC transpiler to improve performance
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!
This suggestion is on stage 2, which means, is waiting for a POC. Excellent. Let's continue the discussion in the issue #15
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
Discussion approved on #15
To be implemented here in this issue