We created Nx because developers struggle to configure, maintain and especially integrate various tools and frameworks. Setting up a system that works well for a handful of developers and at the same time, easily scales up to an entire organization is hard. This includes setting up low-level build tooling, configuring fast CI, and keeping your codebase healthy, up-to-date, and maintainable.
We wanted to provide a solution that is easy to adopt and scale.
How Does Nx Help You?
In a nutshell, Nx helps to: speed up your computation (e.g. builds, tests etc), locally and on CI and to integrate and automate your tooling via its plugins. All of this can be adopted incrementally. You can use plugins, but you don't have to. Look at the Nx architecture in the next section to learn more.
You can use Nx to
- speed up your existing project's builds and tests, locally and on CI (whether that's a monorepo or standalone application)
- quickly scaffold a new project (using Nx plugins) without having to configure any lower-level build tools
- easily integrate new tooling (e.g., Storybook, Tailwind etc), into your project.
- ensure consistency and code quality with custom generators and lint rules
- update your frameworks and tools and keep your workspace evergreen using the automated code migration feature
How Does Nx Work?
Nx is built in a modular fashion to let you only use the features you need.
- The Nx package provides fundamental technology-agnostic capabilities such as: workspace analysis, task running, caching, distribution, code generation and automated code migrations.
- Plugins are NPM packages that built on top of the fundamental capabilities provided by the Nx package. Nx plugins contain code generators, executors (to abstract lower-level build tooling) and automated code migrations for keeping your tools up to date. Contrary to the Nx package, which works the same way with any JS or non-JS project, plugins are usually technology specific. For instance,
@nx/reactadds support for building React apps and libs,
@nx/cypressadds e2e testing capabilities with Cypress. Plugins make developers more productive by removing any friction of integrating different tools with each other and by providing utilities to keep them up to date. The Nx team maintains plugins for React, Next, Remix, Angular, Jest, Cypress, Storybook and more. You can use the
@nx/pluginpackage to easily scaffold a new plugin or even just automate your local workspace. There are also more than 80 community plugins.
- Devkit is a set of utilities for building Nx plugins.
- Nx Cloud helps scale your project on CI by adding remote caching and distributed task execution. It also improves developer ergonomics by integrating with GitHub, GitLab and BitBucket and providing searchable structured logs. Learn more at nx.app.
- Nx Console is an extension for VSCode, IntelliJ and VIM. It provides code autocompletion, interactive generators, workspace visualizations, powerful refactorings and more. You can install it here.
How can I adopt Nx in my existing project?
As shown in the section before, there's a core nx package that can be dropped into an existing project (regardless of whether it is a monorepo or single-project workspace). We made a command to help you with that:
npx nx@latest init
By adding the
nx package you can use Nx commands to run your
package.json scripts and benefit from running tasks in parallel as well as caching. Over time you can then also add in Nx Plugins to further enhance your experience when working with specific tech stacks.
Check out our migration guides for all the details.