NGXS is a state management pattern + library for Angular
Quick Links
- ✨ Learn about it on the docs site
- 🌱 NGXS works with Ivy! Check out the Ivy migration guide
- 🚀 See it in action on Stackblitz
- 😎 Checkout the sample application
- 🔧 Scaffolding application using NGXS Schematics
- 📖 Read the blog posts
- ⚡️ Development of NGXS Labs
- 📝 Learn about updates from the changelog
- ❤️ Give back by becoming a Contributor or a Sponsor
- 👂 We would love to hear about your experience with NGXS, you can leave your feedback here
The Goal of NGXS
NGXS tries to make things as simple and accessible as possible. There can be a lot of boilerplate code in state management, thus a main goal of NGXS is to reduce boilerplate allowing you to do more things with less. It is also not necessary to be super familiar with RxJs.
The Goal of NGXS Labs
The idea with this github organisation is to provide a place for the community to create libraries that augment the main framework with functionality that does not need to be integrated directly into the framework and therefore can evolve through their initial iterations of experimentation without affecting the main @ngxs/store library.
Getting Started - Local Development
Installation
To get started locally, follow these instructions:
- If you haven't done it already, make a fork of this repo.
- Clone to your local computer using git.
- Make sure that you have installed NodeJS.
- Make sure that you have yarn installed.
- Run
yarn install
. - Run
yarn build:packages
.
Creating new packages or add feature/fix
if you make changes @ngxs/store
- Run development mode
yarn build:packages --package store --watch
- Run serve integration examples
yarn start
- ...development...
- Run tests
yarn test:ci
- Create pull request
if you add a new package @ngxs/my-super-plugin
- Create a new project folder
packages/my-super-plugin
- Create template library with ngPackagr
- Add your project to package.json
- Run development mode
yarn build:packages --package my-super-plugin --watch
- ...development...
- Run build
yarn build:packages --package my-super-plugin
- Run tests
yarn test:ci
- Create pull request
NGXS Labs
If you have ideas for creating unique libraries, you can join us. Email us at ngxs.lead@gmail.com
. Or you can email us on Twitter or Slack.
Packages
Tools
Project | Package | Version | Links |
---|---|---|---|
NGXS CLI | @ngxs/cli |
||
NGXS Schematics | @ngxs/schematics |
Packages
Project | Package | Version | Links |
---|---|---|---|
NGXS Store | @ngxs/store |
||
NGXS Logger-plugin | @ngxs/logger-plugin |
||
NGXS Devtools-plugin | @ngxs/devtools-plugin |
||
NGXS WebSocket-plugin | @ngxs/websocket-plugin |
||
NGXS Form-plugin | @ngxs/form-plugin |
||
NGXS Router-plugin | @ngxs/router-plugin |
||
NGXS Storage-plugin | @ngxs/storage-plugin |
||
NGXS HMR | @ngxs/hmr-plugin |
NGXS Labs
Project | Package | Version | Links |
---|---|---|---|
NGXS-labs Data | @ngxs-labs/data |
||
NGXS-labs Emitter | @ngxs-labs/emitter |
||
NGXS-labs Immer adapter | @ngxs-labs/immer-adapter |
||
NGXS-labs Dispatch decorator | @ngxs-labs/dispatch-decorator |
||
NGXS-labs Select snapshot decorator | @ngxs-labs/select-snapshot |
||
NGXS-labs Async storage plugin | @ngxs-labs/async-storage-plugin |
||
NGXS-labs Entity state | @ngxs-labs/entity-state |
||
NGXS-labs Testing tools | @ngxs-labs/testing |
||
NGXS-labs Actions Executing | @ngxs-labs/actions-executing |
||
NGXS-labs Attach Action | @ngxs-labs/attach-action |
Community
Project | Package | Version | Links |
---|---|---|---|
Reset Plugin | ngxs-reset-plugin |
||
NGXS-Loading-plugin | ngxs-loading-plugin |
||
NGXS-History-plugin | ngxs-history-plugin |
Contributors
Thanks to all our contributors!