-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c5fa930
commit 8fc0b52
Showing
3 changed files
with
65 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,76 @@ | ||
# NgrxToolkit | ||
# NgRx Toolkit | ||
|
||
<a alt="Nx logo" href="https://nx.dev" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="45"></a> | ||
<p align="center"> | ||
<img src="https://raw.githubusercontent.com/angular-architects/ngrx-toolkit/main/logo.png" width="320" style="text-align: center"> | ||
</p> | ||
|
||
✨ **This workspace has been generated by [Nx, Smart Monorepos · Fast CI.](https://nx.dev)** ✨ | ||
NgRx Toolkit is an extension to the NgRx Signals Store. **It is still in beta** but already offers following features: | ||
|
||
- Devtools: Integration into Redux Devtools | ||
- Redux: Possibility to use the Redux Pattern (Reducer, Actions, Effects) | ||
|
||
## Start the app | ||
To install it, run | ||
|
||
To start the development server run `nx serve ngrx-toolkit`. Open your browser and navigate to http://localhost:4200/. Happy coding! | ||
|
||
|
||
## Generate code | ||
|
||
If you happen to use Nx plugins, you can leverage code generators that might come with it. | ||
|
||
Run `nx list` to get a list of available plugins and whether they have generators. Then run `nx list <plugin-name>` to see what generators are available. | ||
|
||
Learn more about [Nx generators on the docs](https://nx.dev/plugin-features/use-code-generators). | ||
|
||
## Running tasks | ||
|
||
To execute tasks with Nx use the following syntax: | ||
|
||
``` | ||
nx <target> <project> <...options> | ||
```shell | ||
npm i @angular-architects/ngrx-toolkit | ||
``` | ||
|
||
You can also run multiple targets: | ||
|
||
``` | ||
nx run-many -t <target1> <target2> | ||
``` | ||
## Devtools: `withDevtools()` | ||
|
||
..or add `-p` to filter specific projects | ||
This extension is very easy to use. Just add it to a `signalStore`. Example: | ||
|
||
```typescript | ||
export const FlightStore = signalStore( | ||
{ providedIn: 'root' }, | ||
withDevtools('flights'), // <-- add this | ||
withState({ flights: [] as Flight[] }), | ||
// ... | ||
); | ||
``` | ||
nx run-many -t <target1> <target2> -p <proj1> <proj2> | ||
``` | ||
|
||
Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/core-features/run-tasks). | ||
|
||
## Want better Editor Integration? | ||
|
||
Have a look at the [Nx Console extensions](https://nx.dev/nx-console). It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users. | ||
|
||
## Ready to deploy? | ||
|
||
Just run `nx build demoapp` to build the application. The build artifacts will be stored in the `dist/` directory, ready to be deployed. | ||
|
||
## Set up CI! | ||
|
||
Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further. | ||
|
||
- [Set up remote caching](https://nx.dev/core-features/share-your-cache) | ||
- [Set up task distribution across multiple machines](https://nx.dev/nx-cloud/features/distribute-task-execution) | ||
- [Learn more how to setup CI](https://nx.dev/recipes/ci) | ||
|
||
## Connect with us! | ||
## Redux: `withRedux()` | ||
|
||
`withRedux()` bring back the Redux pattern into the Signal Store. | ||
|
||
It can be combined with any other extension of the Signal Store. | ||
|
||
Example: | ||
|
||
```typescript | ||
export const FlightStore = signalStore( | ||
{ providedIn: 'root' }, | ||
withState({ flights: [] as Flight[] }), | ||
withRedux({ | ||
actions: { | ||
public: { | ||
load: payload<{ from: string; to: string }>(), | ||
}, | ||
private: { | ||
loaded: payload<{ flights: Flight[] }>(), | ||
}, | ||
}, | ||
reducer(actions, on) { | ||
on(actions.loaded, ({ flights }, state) => { | ||
patchState(state, 'flights loaded', { flights }); | ||
}); | ||
}, | ||
effects(actions, create) { | ||
const httpClient = inject(HttpClient); | ||
return { | ||
load$: create(actions.load).pipe( | ||
switchMap(({ from, to }) => | ||
httpClient.get<Flight[]>( | ||
'https://demo.angulararchitects.io/api/flight', | ||
{ | ||
params: new HttpParams().set('from', from).set('to', to), | ||
}, | ||
), | ||
), | ||
tap((flights) => actions.loaded({ flights })), | ||
), | ||
}; | ||
}, | ||
}), | ||
); | ||
``` | ||
|
||
- [Join the community](https://nx.dev/community) | ||
- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools) | ||
- [Follow us on Twitter](https://twitter.com/nxdevtools) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters