A Little Bit of History

We never talked about it publicly, but when we started working on Nx, we considered creating a separate CLI tool (and we actually prototyped one) instead of extending the Angular CLI.

Why?

Angular CLI 1.x always supported the workspace scenario — you could have multiple projects or apps in the same CLI workspace. And you could build and test them independently. The problem was that all the apps had to be built and tested in exactly the same way. Webpack would run the Angular compiler and then would bundle everything together.

Angular CLI 1.x wasn’t a great fit for Nx.

We talked to the Angular CLI team, and they shared the design docs for what became Angular CLI 6. It was clear that most of what we needed to make Nx excellent would be available in future versions of the Angular CLI. So we decided to invest the effort to make Nrwl Nx an extension to Angular CLI 1.x.

It wasn’t easy.

We had to use serious Cirque-du-Soleil-level gymnastics to work within the scope of the CLI to accomplish what we set out to do with Nx, and even then we were not able to do everything we wanted to — Angular CLI 1.x just didn’t support our use case.

This is why we are so excited about Angular CLI 6!

Angular CLI 6.x adds the ability to create different types of projects in a workspace. With this new set of extension points, we removed the workarounds, made the implementation of Nx cleaner, and made it a lot more powerful.

The bet we placed on becoming an extension to the Angular CLI succeeded!