This tool was created to simplify some kind of everyday operation like:
-
creating UI modules in a separate library for Angular 14+ using Nx.
-
creating feature states using NgRx as state manager
You need Nx installed and set up before using this tool.
Via NPM:
npm i nx -D
Via Yarn:
yarn add nx -D
Then you need to initialise Nx workspace by running following command:
npx nx init
If you have Nx installed globally, please run nx command without npx prefix.
npm i @xelberasw/clgen -D
If you want this tool to be installed globally, append -g key to command
yarn add @xelberasw/clgen -D
If you want this tool to be installed globally, append -g key to command
This tool is installed as binary. You could use npx clgen
command on projects root for generating stuff.
Use following command to get usage help information:
npx clgen help
This command generates set of state-related files. State manager is NgRx.
Set of files created at directory specified by --directory
:
- <name>.actions.ts
- <name>.effects.ts (if not switched of by
--skip-effects
) - <name>.reducer.ts
- <name>.selectors.ts
- <name>.state.ts
If no --same-directory
is specified, subfolder called state
is created and all files are placed there.
These files contain minimal set of code could be used out of the box.
Create set of libraries to be used as a single page.
This command will create multiple libraries under {libsDir}/<name>
according to best practices. They are:
- models. This library must be used for storing models any. Could be referenced by data, feature and ui modules.
- data. This library contains all data management code including state if flag
--skip-state
was not specified. Could be referenced by app and feature module. - feature. This library must be used for storing container components, having almost no layout and css, but has all the logic. Could be referenced by data module only
- ui. This library must be used for storing components supposed to have rendering features and no logic.
Please feel free to create pull requests with new features and/or bugfixes if any. Please feel free to create feature requests.