@nestjs-mod/schematics
TypeScript icon, indicating that this package has built-in type declarations

2.7.15 • Public • Published

NestJS-mod Logo

A collection of utilities for unifying NestJS applications and modules.

NPM Version Package License NPM Downloads Release to NPM Telegram Group

Description

NestJS is a great framework and you can do great things with it, but often when developing a large number of applications within the same organization, we end up with different application architectures, file structures, and a lot of duplicate code.

The NestJS-mod collection of utilities are designed to unify applications and modules, and also introduce new logical options for dividing responsibilities between modules (Core, Feature, Integration, System, Infrastructure).

Since all parts of the application are unified, you can create a report on the entire project infrastructure.

Getting started

Create new application

Commands for create empty NestJS-mod application

# Create empty nx project
npx --yes create-nx-workspace@17.2.8 --name=project-name --preset=empty --interactive=false --nx-cloud=false

# Go to created project
cd project-name

# Install all need main dev-dependencies
npm install --save-dev @nestjs-mod/schematics@latest

# Create NestJS-mod application
./node_modules/.bin/nx g @nestjs-mod/schematics:application --directory=apps/app-name --name=app-name --projectNameAndRootFormat=as-provided --strict=true

Start created application

# Prepare all files
npm run manual:prepare

# Start application in dev mode
npm run serve:dev:app-name

# Build and start application in prod mode

## Build
npm run build:prod:app-name

## Start
npm run start:prod:app-name

Create new library

Commands for create empty NestJS-mod library

# Create NestJS-mod library
./node_modules/.bin/nx g @nestjs-mod/schematics:library feature-name --buildable --publishable --directory=libs/feature-name --simpleName=true --projectNameAndRootFormat=as-provided --strict=true

Add created library to apps/app-name/src/main.ts

// Example without options
bootstrapNestApplication({
  ...
  modules: {
    feature: [FeatureName.forRoot()],
  }
});

// Example with options
bootstrapNestApplication({
  ...
  modules: {
    feature: [FeatureName.forRoot({
      configuration: { optionsName: 'options name' },
    })],
  }
});


// By default, in the example, the application looks for env by the key `APP_NAME_ENV_NAME`, but you can override it, for example:
bootstrapNestApplication({
  ...
  modules: {
    feature: [FeatureName.forRoot({
      environments: { envName: 'env name' },
    })],
  }
});

Create an infrastructure report

You can generate a report for all modules and their configurations.

# Build all applications and library
npm run build

# Generate markdown report
npm run docs:infrastructure

After which the file INFRASTRUCTURE.MD appear in the application folder apps/app-name.

Links

Questions

For questions and support please use the official Telegram group. The issue list of this repo is exclusively for bug reports and feature requests.

Stay in touch

License

MIT licensed.

Package Sidebar

Install

npm i @nestjs-mod/schematics

Weekly Downloads

5

Version

2.7.15

License

MIT

Unpacked Size

156 kB

Total Files

103

Last publish

Collaborators

  • endykaufman