rollup-plugin-typescript2 icon indicating copy to clipboard operation
rollup-plugin-typescript2 copied to clipboard

Do you really need rpt2?

Open mikob opened this issue 4 years ago • 4 comments

What happens and why it is wrong

Related to #79 and #148

Just a quick PSA in case it will help people out. I was using this plugin because it was convenient but building would take 2gb of memory and a long time. I narrowed down the issue to this plugin. Now I'm simply using tsc then plugging in the js input to rollup instead and my build time is down about 5x and memory down about 100x.

I'm not knocking on the hard work @ezolenko (thanks for the plugin) has done in this project, and I'm sure it's still useful to those with smaller projects, but if you're like me and see performance issues, think if you really need this plugin because the perf costs are high.

Just my 2 cents...

Versions

  • typescript: 3.6.4
  • rollup: 1.26.3
  • rollup-plugin-typescript2: 0.25.1

mikob avatar Nov 02 '19 15:11 mikob

Yep, convenience has a price. :) If anybody has an idea of how to speed it up, make a PR :)

ezolenko avatar Nov 05 '19 17:11 ezolenko

@mikob

Now I'm simply using tsc then plugging in the js input to rollup instead and my build time is down about 5x and memory down about 100x.

Thanks for the data point, as someone still trying to decided if I want to start my next TS library with Rollup, can you give us a summary of how you did this?

adrianmcli avatar Nov 10 '19 08:11 adrianmcli

@mikob

Now I'm simply using tsc then plugging in the js input to rollup instead and my build time is down about 5x and memory down about 100x.

I am also interested in your solution. The entry point usually imports a bunch of other modules, so we use rollup to bundle them all into a single file. tsc only supports single outfile for "AMD" and "System" module format.

sntran avatar Jun 22 '20 16:06 sntran

@adrianmcli @sntran I'm using the typescript compiler API and the rollup API in a script. Basically, like this:

watchTs(); const watcher = rollup.watch(rollupConfig);

watchTs does a lot of boilerplate ts things (they don't make their API easy). You can start by looking at ts.createWatchCompilerHost

mikob avatar Jun 24 '20 01:06 mikob

Hi folks, just doing some housekeeping in the issues. I'm going to close this one out as it's gone quite stale (no comments in 2+ years) and only has one upvote.

This issue also does not have a specific course of action nor much specific performance tunings -- please see #148 for some discussion on various tunings / configurations / benchmarks. I've also described some Rollup + rpt2 nuances in https://github.com/ezolenko/rollup-plugin-typescript2/issues/148#issuecomment-1237444300 there. There may be other optimizations to be had in other issues with specific recommendations such as #113, but this one is too generic to really be actionable.

That being said, please feel free to continue recommending specific optimizations and the performance characteristics of different configurations here and in #148, as those can be helpful / useful, especially to other users!

agilgur5 avatar Sep 05 '22 20:09 agilgur5