nrwl / nx

Smart Monorepos · Fast CI
https://nx.dev
MIT License
23.63k stars 2.36k forks source link

Nx 11 Plans #3377

Closed vsavkin closed 3 years ago

vsavkin commented 4 years ago

Nx 11 Plans

Nx 9 => Nx 10 Highlights

  1. Computation caching. If your or your team member has already built or tested similar code, Nx will use their results to speed up the command instead of rebuilding or retesting everything from scratch. This is the most important addition to core capabilities of Nx since the tool's creation. It helps build much larger projects.

  2. Custom workspace layouts. The core of Nx always supported custom layouts, but plugins expected the apps and libs folders to be there. Now the layout can be configured in nx.json and is respected by all core plugins. We also created an "OSS" preset to make migration from Lerna easier. A lot of open source projects, including Nx itself, are now built with Nx.

  3. Optimizing performance. Nx collects metadata about a workspace to be able to use caching and code change analysis. This metadata is then stored on disk (in node_modules), so Nx doesn't have to recompute it from scratch every time. For large projects, however, even checking if this metadata is up to date could take hundreds of milliseconds, which is unacceptable. We reworked this to take advantage of git, which resulted in 10x improvements.

  4. Dep graph. We reworked the dep graph feature to handle much larger workspaces. Both, in terms of performance (you can actually render it), and in terms of ergonomics (you can make sense of it).

  5. React. We improved our support for the React ecosystem, including a much more solid support for Next.js. We also added initial support for Gatsby.

  6. Angular. We added support for Angular 10. We also added the npx make-angular-cli-faster command to add the Nx computation cache to any Angular CLI project.

  7. The Cypress, Storybook, Jest, ESLint plugins got updated to make sure they work with the latest versions of the tools.

  8. Community plugins. We made creating Nx plugins easier. npx create-nx-plugins scaffolds a Nx plugin project. We have guides and videos walking you through the process. And now you can add your plugins to the official docs site and to nx list.

  9. nx.dev got more high-quality guides. Plus, we integrated a much better full-text search.

  10. Nx Console--the VS Code plugin for Nx. We fixed bugs and improved performance.

  11. We love the Nx community. The Nx Community Slack is a great place to get your questions answered. You can subscribe to Nx Newsletter to get updates from the core team. "Nx Office Hours" by Brandon Roberts is something I'm personally very happy with. I hope other tech communities do similar stuff.

Nx is Different

The Nx core team spends more time working on large projects built with Nx than on Nx itself. We work with people who aren't familiar with Nx. We work with legacy projects ported to Nx exercising all possible edge cases. Different CI systems, different dev workflows. It's a lot of feedback.

I remember chatting with a contributor to another build tool. I mention that some folks find the tool hard to use. The person replied that it doesn't matter if it's hard to use. "They will use it regardless" And, of course, they didn't.

There is almost nothing in software itself that can keep you honest. It's too malleable. I hope because we work on different projects with so many different people, Nx will continue solving real problems and be pleasant to use.

Nx 11 Plans

Most of what we plan are incremental improvements: making things faster, fixing bugs, clarifying documentation. Every plugin will receive some attention. So, even though you don't see, for instance, Storybook mentioned below, we will improve our Storybook support, fix issues etc..

Node

Nx is already a great tool for building Node apps and libs. You can generate projects. You can test, lint, deploy them. You can reuse code. We are going to solidify the Node story. We are going to add the Node flavour of docs, videos, tutorials. We are planning to add affordances simplifying using Docker, affordances for creating e2e tests for APIs etc..

React

We are going to merge the Gatsby plugin into the main repo. We are planning to add initial support for React Native. We are also going to release more high-quality guides and free video courses made for React folks.

Angular

We are going to add support for Angular 11.

Java

The core of Nx is technology agnostic. At Nrwl, we develop a Java service in our private Nx monorepo. It's part of the same dependency graph. Caching works just as well. We also put a lot of effort in improving the run-commands builder, so you can easily integrate any technology into an Nx workspace. So what are we doing here?

First, we are going to document how to add Java/.Net/Golang/Rust to your Nx workspace. Second, we will add basic affordances for Gradle-based Java projects. So you can add a Spring Boot application to your Nx workspace without having to "figure it out".

Incremental Builds

The Nx distributed computation cache helps you build much larger applications. You don't have to rebuild the whole application on your machine. Instead, you reuse the computation done by your team-mates or CI.

You can already do it with Nx, as shown here. But because WebPack isn't optimized for this use case, it's awkward, and we can do a lot better. So we will focus on making setting up good dev experience for extremely-large applications easy.

github-actions[bot] commented 3 years ago

This issue has been automatically marked as stale because it hasn't had any recent activity. It will be closed in 14 days if no further activity occurs. If we missed this issue please reply to keep it active. Thanks for being a part of the Nx community! 🙏

mtpultz commented 3 years ago

Is there a ticket for documentation on integrating .Net Core into Nx that I can watch?

Bulletninja commented 3 years ago

Would be great to have separate tickets for each language, maybe ETA or proxy for it.

(Rust pls 😆)

mklueh commented 2 years ago

As Vue and Nuxt are not supported by the NX core, but rather just with a third-party plugin https://github.com/ZachJW34/nx-plus which does not work in my case (version conflicts / outdated packages - who knows), is it possible to get those running without any external plugins?

Any change in plans to support the Vue ecosystem natively? Spending days already to get things working without any success.

github-actions[bot] commented 1 year ago

This issue has been closed for more than 30 days. If this issue is still occuring, please open a new issue with more recent context.