Our newest book, free for Nrwl & Nx subscribers
Effective React Development with Nx, Part 1
What's in this book?
In this book you will learn about Nx and monorepo-style development for React applications. Many large companies, such as Google, Facebook, and Microsoft all use the monorepo approach to software development. This approach provides many benefits, such as:
- Increased collaboration between teams.
- Increased visibility across teams.
- Increased developer mobility between different projects.
- More consistency in the development experience (e.g. tooling, process).
Nx is a tool that helps teams work with monorepos. We’ll explore how it enables us to build React applications more effectively. We’ll do this by looking at concrete code examples that mimic real-world applications.
You will learn:
- How to create a React workspace and generate code using Nx.
- How to run lint, unit tests, and end-to-end tests with Nx.
- How Nx helps us understand and enforce workspace structure.
- How Nx helps us understand and verify code changes.
About Nrwl and Nx
We at Nrwl we use our experience working at Google to help companies build frontend applications the way Google does it.
That is why we built Nx--a set of tools designed specifically to help teams work with monorepos. With it, you can implement Google-style development in your organization: you can set up your workspace, enable code-sharing and collaboration, and use the provided tools to establish and promote best practices.
If you’ve ever worked at a company with more than one team, chances are you’ve had to deal with some challenges when it comes to change management.
In a typical work setting, development teams are divided by domain or technology. For example, one team building the UI in React, and another one building the API in Express. These teams usually have their own code repositories, so changes to the software as a whole requires juggling multiple repositories.
A few problems that arise from a multi-repository setup include:
- Lack of collaboration because sharing code is hard and expensive.
- Lack of consistency in linting, testing, and release processes.
- Lack of developer mobility between projects because access may be un- available or the development experience vary too greatly.
- Difficulty in coordinating changes across repositories.
- Late discovery of bugs because they can only occur at the point of integra- tion rather than when code is changed.