Rxjs: Simplify build process

Created on 13 Mar 2019  路  3Comments  路  Source: ReactiveX/rxjs

The current build process in master is very, very convoluted, as it's evolved over several years. What I cobbled together with some help in the experimental branch is better, but probably still not perfect.

I'd like to the build process to be simplified, provided that it can still give us the exact same (or better) output, and even better, provide a better debugging experience for contributors.

If we could just port over what was done in experimental into master, that might be a start, but I suspect that there are things missing.

Other Things

We probably shouldn't worry too much about the old perf tests, they seem to be irrelevant at this point, and they need to be updated (in a separate issue).

It would be great if, as part of this effort, it was documented how to setup VS Code to debug the new setup.

Help Wanted

Most helpful comment

I agree. ATM, its complexity is a barrier for new contributors. Last year, after John Lindquist made a contribution, he mentioned to me that it was much more tedious than he'd expected. It would be great if we could improve this.

All 3 comments

I agree. ATM, its complexity is a barrier for new contributors. Last year, after John Lindquist made a contribution, he mentioned to me that it was much more tedious than he'd expected. It would be great if we could improve this.

@benlesh What are some improvements that you are thinking? I did some analysis and here are my initial suggestions.

  1. Multi-Package: We are essentially publishing different packages within one package. Should we put them in separate package, that is, "rxjs", "rxjs/operators", "rxjs/testing", "rxjs/websocket". This would ensure that each generated bundle is of a smaller size. Will keep "rxjs-compact" as a separate project in this list.
  2. Organize using Yarn Workspaces or Lerna: By splitting into different packages, we can create a multi package - mono repo structure. We will use yarn workspaces and/or Lerna to organize the repo.
  3. Consistent Commands: We will then run common build commands from root on each of these projects. Each project will have its own set of common build/compile commands defined in its package.json. This would isolate them from the commands of the other projects and would result in consistent commands. The root command will delegate to package commands.
  4. Move Unit test next to Source: Move all the unit spec file next to the ts files. Currently they are kept in a separate folder. It makes it easier if they are kept next to each other.

Let's discuss and agree on the required changes. I would be happy to work on this.

Closing this, as I think most of what's in here has been addressed in https://github.com/ReactiveX/rxjs/pull/5032

Was this page helpful?
0 / 5 - 0 ratings

Related issues

unao picture unao  路  4Comments

cartant picture cartant  路  3Comments

haf picture haf  路  3Comments

jakovljevic-mladen picture jakovljevic-mladen  路  3Comments

Zzzen picture Zzzen  路  3Comments