What is @ngrx/schematics?
@ngrx/schematics is a collection of Angular schematics for generating NgRx files such as actions, reducers, effects, and more. It helps streamline the process of setting up and maintaining NgRx in Angular applications.
What are @ngrx/schematics's main functionalities?
Generate Store
This command generates a new NgRx store with the specified state and sets it up in the root module. It creates necessary files and boilerplate code for the store.
ng generate @ngrx/schematics:store State --root --module app.module.ts
Generate Actions
This command generates a new set of actions for a specified feature (e.g., User). It creates an actions file with predefined action types and classes.
ng generate @ngrx/schematics:action User
Generate Reducer
This command generates a new reducer for a specified feature (e.g., User). It creates a reducer file with initial state, reducer function, and necessary imports.
ng generate @ngrx/schematics:reducer User
Generate Effects
This command generates a new effect for a specified feature (e.g., User). It creates an effects file with boilerplate code for handling side effects in NgRx.
ng generate @ngrx/schematics:effect User
Other packages similar to @ngrx/schematics
@angular/cli
@angular/cli is the official Angular CLI tool that provides a wide range of commands for generating and managing Angular projects. While it does not specifically focus on NgRx, it can be extended with custom schematics to include NgRx-related functionality.
nx
Nx is a set of extensible dev tools for monorepos, which helps you develop like Google, Facebook, and Microsoft. It provides powerful CLI commands for generating and managing Angular applications, including support for NgRx. Nx offers more advanced features for managing large-scale projects compared to @ngrx/schematics.
schematics-utilities
schematics-utilities is a utility library for Angular schematics that provides helper functions for creating and modifying Angular projects. It can be used to create custom schematics, including those for NgRx, but requires more manual setup compared to @ngrx/schematics.
11.0.0-beta.0 (2021-01-05)
Bug Fixes
- update Angular peer dependencies to version 11 (#2843) (f63d281), closes #2842
- component: add schematic assets to ng-package.json (9598527), closes #2819
- component-store: add schematic assets to ng-package.json (0e3b52d), closes #2819
- component-store: adjust updater to accept partials (#2765) (b54b9b6), closes #2754
- router-store: ingore slash when comparing routes (#2834) (cad3f60), closes #2829 #1781
- schematics: add schematics to devDependencies (#2784) (daf1889)
- store: add noop for all methods in MockReducerManager (#2777) (a489b48), closes #2776
- store: correct types for SelectorFactoryConfig (#2752) (aa9bf1a)
Code Refactoring
- use consistent naming of injection tokens across packages (#2737) (e02d0d4)
Features
- component-store: add patchState method (#2788) (ecedadb)
- component-store: add tapResponse operator (#2763) (d1873c9)
- component-store: allow more than 4 selects (#2841) (7c29320)
- effects: add support for provideMockActions outside of the TestBed (#2762) (c47114c)
- effects: allow usage of empty forRoot array multiple times (#2774) (5219ff5)
- entity: remove addAll (#2783) (93a4754)
- router-store: add selectParamFromRouterState selector (#2771) (3a1f359), closes #2758
- router-store: Add urlAfterRedirects (#2775) (14553f6)
- store: add object-style StoreModule.forFeature overload (#2821) (17571e5), closes #2809
- store: add support for provideMockStore outside of the TestBed (#2759) (1650582), closes #2745
Performance Improvements
- router-store: optimize selectQueryParams, selectQueryParam and selectFragment selectors (#2764) (918f184)
BREAKING CHANGES
- router-store: Router-store selectors for query params and fragment select from the root router state node. This could potentially break unit tests, but is functionally equivalent to the current behavior at runtime.
BEFORE:
selectQueryParams - returns query params from the last router state node
selectQueryParam - returns a query param from the last router state node
selectFragment - returns the fragment from the last router state node
AFTER:
selectQueryParams - returns query params from routerState.root
selectQueryParam - returns a query param from routerState.root
selectFragment - returns the fragment from routerState.root
- Angular peer dependency versions are bumped to latest major (11)
BEFORE:
Minimum Angular peer dependency version is ^10.0.0
AFTER:
Minimum Angular peer dependency version is ^11.0.0
- entity: To overwrite the entities, we previously used the
addAll
method but the method name was confusing.
BEFORE:
adapter.addAll(action.entities, state);
AFTER:
The new method name setAll
describes the intention better.
adapter.setAll(action.entities, state);
- refactor(data): use the setAll adapter method
- The initial state Injection Token for
@ngrx/component-store
has been renamed
BEFORE:
Injection Token is initialStateToken
AFTER:
Injection Token is INITIAL_STATE_TOKEN
<a name="10.0.1"></a>