What is @nrwl/jest?
The @nrwl/jest package is part of the Nx suite of tools, designed to enhance the development experience with Jest in a monorepo setup. It provides seamless integration of Jest into Nx workspaces, enabling efficient unit testing configurations, execution, and optimizations tailored for projects managed within an Nx workspace.
What are @nrwl/jest's main functionalities?
Simplified Jest Configuration
Allows for simplified and centralized Jest configuration within an Nx workspace, making it easier to manage and share configurations across multiple library and application projects.
{
"jestConfig": "./jest.config.js",
"tsConfig": "./tsconfig.spec.json",
"setupFile": "./src/test-setup.ts"
}
Parallel Test Execution
Enables parallel execution of tests across multiple projects within the workspace, significantly reducing the total time required for running tests in large projects.
nx run-many --target=test --all --parallel
Test Affected Projects
Identifies and runs tests only for the projects affected by recent changes, improving efficiency in continuous integration pipelines by skipping tests for unchanged projects.
nx affected:test
Other packages similar to @nrwl/jest
jest
Jest is the underlying testing framework that @nrwl/jest configures and enhances for use within Nx workspaces. While Jest can be used independently for testing JavaScript and TypeScript projects, @nrwl/jest provides additional integrations and optimizations for monorepo setups.
mocha
Mocha is another popular JavaScript test framework that can be used for unit and integration testing. Unlike @nrwl/jest, which is tailored for Jest and Nx workspaces, Mocha offers a more general-purpose testing solution without specific optimizations for monorepos or Nx.
karma
Karma is a test runner developed by the AngularJS team, designed to work with any framework. It differs from @nrwl/jest by focusing on executing tests in real browsers, providing a more integrated environment for testing browser-specific features. However, it lacks the monorepo-specific enhancements provided by @nrwl/jest.
Nx: Smart, Fast and Extensible Build System
Nx is a next generation build system with first class monorepo support and powerful integrations.
This package is a Jest plugin for Nx.
Getting Started
Creating an Nx Workspace
Using npx
npx create-nx-workspace
Using npm init
npm init nx-workspace
Using yarn create
yarn create nx-workspace
The create-nx-workspace
command will ask you to select a preset, which will configure some plugins and create your applications to help you get started.
? What to create in the new workspace (Use arrow keys)
❯ apps [an empty workspace with no plugins with a layout that works best for building apps]
core [an empty workspace with no plugins set up to publish npm packages (similar to yarn workspaces)]
ts [an empty workspace with the JS/TS plugin preinstalled]
react [a workspace with a single React application]
angular [a workspace with a single Angular application]
next.js [a workspace with a single Next.js application]
nest [a workspace with a single Nest application]
express [a workspace with a single Express application]
web components [a workspace with a single app built using web components]
react-native [a workspace with a single React Native application]
react-express [a workspace with a full stack application (React + Express)]
Select the preset that works best for you
Adding Nx to an Existing Monorepo
Run:
npx add-nx-to-monorepo@latest
Documentation & Resources
A few links to help you get started: