Monorepo for an Angular shared library used across micro-frontends.
This repository contains the Angular library @devalfe/ngx-global-state, which provides a distributed global state and message bus utilities for micro-frontend architectures.
If you are looking for library-specific usage and API docs, see: projects/ngx-global-state/README.md.
- Language: TypeScript
- Framework: Angular 20 (Angular CLI workspace; library project)
- Build tools: Angular Build + ng-packagr
- Testing: Jest (jsdom, ts-jest)
- Linting/Formatting: ESLint, Prettier
- Docs: Compodoc
- Release/Tooling: Husky, Commitizen (cz-git), Semantic Release (configured, dry-run script present)
- Package manager: npm
Entry points:
- Library public API:
projects/ngx-global-state/src/public-api.ts - Package build config:
projects/ngx-global-state/ng-package.json(ng-packagr)
Published package name (from usage docs in the library): @devalfe/ngx-global-state.
- Node.js (LTS recommended; project uses TypeScript ~5.9 and Angular 20)
- npm (Angular CLI is used via npm scripts; workspace sets packageManager to npm)
Global installs are not required; all commands below use npm scripts.
- Install dependencies:
npm install- Build the library (production config by default):
npm run build # Or: npm run build:lib for ng-packagr directly- Run tests:
npm test- Generate documentation:
npm run docs
npm run docs:serve # serves docs at http://localhost:8080The most relevant npm scripts defined in package.json:
- ng:
ng - start:
ng serve(NOTE: This is an Angular workspace for a library; there is no app configured to serve. See TODO below.) - build:
ng build(builds the library using Angular build system) - watch:
ng build --watch --configuration development - build:lib:
ng-packagr -p projects/ngx-global-state/ng-package.json - publish:lib:
cd dist/ngx-global-state && npm publish --access restricted - pack:lib:
npm run build:lib && cd dist/ngx-global-state && npm pack - clean:
rimraf dist - test:
jest - test:staged:
jest -o --bail - test:watch:
jest --watch - test:coverage:
jest --ci --runInBand --coverage - docs:
compodoc -p tsconfig.json -d docs - docs:serve:
compodoc -s -d docs - lint:
eslint . - lint:fix:
eslint . --fix - format:
prettier --write . - format:check:
prettier --check . - commit:
cz - prepare:
husky - release:dry:
semantic-release --dry-run
After you publish @devalfe/ngx-global-state to your registry, install it in an Angular app:
npm install @devalfe/ngx-global-state --saveQuick bootstrap example (see the library README for full API):
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { provideGlobalState, provideMessageBus } from '@devalfe/ngx-global-state';
bootstrapApplication(AppComponent, {
providers: [
...provideGlobalState({ appId: 'shell', persistence: 'session', crossApp: 'none' }),
...provideMessageBus({ appId: 'shell' }),
],
});- No environment variables are currently required by the library or build.
- TODO: If publishing to a private registry, document required npm auth variables here (e.g., NPM_TOKEN) and usage for CI.
- Runner: Jest (jsdom)
- Config:
jest.config.ts - Setup files:
projects/ngx-global-state/test/setup-tests.ts - Source under test:
projects/ngx-global-state/src/lib/**/*.ts
Common commands:
npm test # run all tests
npm run test:watch # watch mode
npm run test:coverage # CI-friendly with coveragenpm run lint
npm run lint:fix
npm run format
npm run format:checkGenerate static docs and serve them locally:
npm run docs
npm run docs:serve # http://localhost:8080- Build via Angular:
npm run build - Build via ng-packagr directly:
npm run build:lib - Create a tarball:
npm run pack:lib(outputs underdist/ngx-global-state) - Publish (restricted access by default):
npm run publish:lib
The library output is located at dist/ngx-global-state/.
- angular.json — Angular workspace config (library project: ngx-global-state)
- projects/ngx-global-state — Library source
- src/public-api.ts — entry point of the library package
- src/lib/** — implementation
- test/** — jest setup and utilities
- README.md — library-specific docs (Spanish)
- jest.config.ts — Jest configuration
- eslint.config.cjs — ESLint configuration
- tsconfig*.json — TypeScript configuration
- dist/ngx-global-state — Build artifacts (generated)
- Conventional commits recommended via Commitizen:
npm run commit - Pre-commit hooks via Husky are prepared with
npm run prepare - Semantic Release is present; a dry-run script is provided:
npm run release:dry - TODO: Configure CI and real release workflow if needed.
- TODO: Add a LICENSE file to the repository and state the license here (e.g., MIT). Currently, no license file is present in the repo root.