Nx CLI
Why use the Nx CLI?
The Nx CLI isn't just another terminal command that accomplishes a predefined task. Developers from Nrwl and the community have created plugins that provide a base level of functionality. In addition, custom generators and executors can be written - expanding the capabilities of the Nx CLI to fit what your organization needs.
The Nx CLI provides commands that fall into three categories:
- Modifying code using generators
- Acting on code using executors
- Understanding the whole codebase
Modifying Code Using Generators
Generators allow developers to automate a code modification task. Generators can be distributed as part of a plugin or developed locally in an Nx workspace. Generators can be composed to create complex workflows and then included in documentation to ensure consistency across the codebase.
Acting on code using executors
Executors are commands that are run that don't affect the actual code. There are built in executors for test
, lint
, serve
and build
but custom executors can have any name. Nx automatically caches the output of executors so that re-running the same executor with the same code input will complete in seconds. The paid Nx Cloud offering allows this cache to be shared across every developer in your organization.
Understanding the whole codebase
Nx creates and maintains a dependency graph between projects based on import statements in your code and uses that information to run executors only on the affected projects in a codebase. A visual version of the dependency graph is also available to help developers understand the architecture of the codebase.
Common Commands
Invoke a generator:
nx generate app my-react-app
This command creates a new React app named my-react-app
.
Create a workspace generator:
nx generate workspace-generator my-generator
nx workspace-generator my-generator
The first command scaffolds a new customizable workspace generator named my-generator
and the second command invokes it.
Run an executor on one project:
nx run my-react-app:build
nx build my-react-app
Both of these commands build the my-app
application. See the workspace.json documentation for information on configuring executor options.
Run an executor for many projects:
nx run-many --target=build --projects=app1,app2
This command builds app1
and app2
.
Run an executor for all affected projects:
nx affected --target=build
This command runs the build executor for all projects that are affected by the current code change.
View the dependency graph:
nx dep-graph
nx dep-graph --watch
nx affected:dep-graph
The first command launches a web browser with repository's dependency graph rendered visually. You can add the --watch
flag to watch for changes to the dep grpah and update the view in-browser. The second command renders the same graph with projects affected by the current code change highlighted.
List installed plugins:
nx list
This command lists the currently installed Nx plugins and shows other plugins that are available.
Update plugins:
nx migrate latest
nx migrate --run-migrations=migrations.json
The first command updates the installed Nx plugin versions and creates a list of generators to keep configuration files up to date. The second command invokes those generators.
Common Env Variables
- Setting NX_VERBOSE_LOGGING=true will print debug information useful for troubleshooting.
- Setting NX_PERF_LOGGING=true will print debug information useful for profiling executors and Nx itself.