{"_id":"@benrasha/nest-generator","_rev":"4-b0ed730f216c74a4f0f62baeaea13127","name":"@benrasha/nest-generator","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@benrasha/nest-generator","version":"1.0.0","keywords":["nestjs","cli","generator"],"author":{"name":"Grishchenko, Ivan"},"license":"MIT","_id":"@benrasha/nest-generator@1.0.0","maintainers":[{"name":"ben_rasha","email":"bben.rasha@gmail.com"}],"homepage":"https://github.com/ivvan-grishchenko/nestjs-generator","bugs":{"url":"https://github.com/ivvan-grishchenko/nestjs-generator/issues"},"bin":{"nest-generator":"dist/main.js"},"dist":{"shasum":"f575eda520258d4e79182a2abacfe136ea52be90","tarball":"https://registry.npmjs.org/@benrasha/nest-generator/-/nest-generator-1.0.0.tgz","fileCount":29,"integrity":"sha512-Z3F+A+m85c4rnwDMQew5pzCKceqqGI/2Oc8i6zZdcEguB74a3LQKWxTnHMHicXg3aZzTH7d7OLEfPJn3VSBp4g==","signatures":[{"sig":"MEQCIB8a2zS7Q1FNfyNkMH+QUyHQMWlLW3blGlaVa/ezIgrJAiAvOUj7bQsLPGUMi1pCIoVBzpQykORn25CI2aLdvWyDoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56848},"gitHead":"33cdd57aae17995a24e52cc8f85a9bf9adbd19ee","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"vitest run","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky","test:cov":"vitest run --coverage","test:e2e":"vitest run --config ./vitest.config.e2e.ts","start:dev":"nest start --watch","commit-msg":"commitlint -e","pre-commit":"npm run lint:staged && npm run test","start:prod":"node dist/main","test:debug":"vitest --inspect-brk --inspect --logHeapUsage --no-file-parallelism","test:watch":"vitest","lint:staged":"lint-staged","postinstall":"node scripts/patch-suites-doubles-vitest.mjs","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"ben_rasha","email":"bben.rasha@gmail.com"},"repository":{"url":"git+https://github.com/ivvan-grishchenko/nestjs-generator.git","type":"git"},"_npmVersion":"11.9.0","description":"NestJS CLI util for generating project from the templates","directories":{},"lint-staged":{"*.ts":"eslint --cache \"{src,apps,libs,test}/**/*.ts\""},"_nodeVersion":"24.14.0","dependencies":{"rxjs":"^7.8.1","chalk":"^5.6.2","fs-extra":"^11.3.4","simple-git":"^3.32.3","@nestjs/core":"^11.0.1","@nestjs/common":"^11.0.1","nest-commander":"^3.20.1","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.18.0","vitest":"^4.0.18","globals":"^16.0.0","ts-node":"^10.9.2","@swc/cli":"^0.7.10","prettier":"^3.4.2","@swc/core":"^1.15.18","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/node":"^22.10.7","lint-staged":"^16.3.1","@suites/unit":"^3.0.1","unplugin-swc":"^1.5.9","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.4.2","@nestjs/testing":"^11.0.1","@types/fs-extra":"^11.0.4","@types/supertest":"^6.0.2","@suites/di.nestjs":"^3.0.1","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","@vitest/coverage-v8":"^4.0.18","@suites/doubles.vitest":"^3.0.1","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","nest-commander-testing":"^3.5.1","eslint-plugin-perfectionist":"^5.6.0","@commitlint/config-conventional":"^20.4.2"},"_npmOperationalInternal":{"tmp":"tmp/nest-generator_1.0.0_1772700830606_0.15984458571258076","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@benrasha/nest-generator","version":"1.1.0","keywords":["nestjs","cli","generator"],"author":{"name":"Grishchenko, Ivan"},"license":"MIT","_id":"@benrasha/nest-generator@1.1.0","maintainers":[{"name":"ben_rasha","email":"bben.rasha@gmail.com"}],"homepage":"https://github.com/ivvan-grishchenko/nestjs-generator","bugs":{"url":"https://github.com/ivvan-grishchenko/nestjs-generator/issues"},"bin":{"nest-generator":"dist/main.js"},"dist":{"shasum":"f9a88b3757dcdbef87e2abdc304444e033b6061c","tarball":"https://registry.npmjs.org/@benrasha/nest-generator/-/nest-generator-1.1.0.tgz","fileCount":29,"integrity":"sha512-OtVCCfmVlOkZ3XGPblKi8lecpGJTPlCk6j8dlOpSrmg2OwH3XbD0fZ9yWk1Rd9CVRu2dwK2xg37WRFkrVQwr6A==","signatures":[{"sig":"MEYCIQDbRxa746N2ae89kBew0ErryrLks8zLfxg6TNRkmwqFqQIhAKI1Rsm0Z6rcgOwDvsRu88h7Ugs7Wl9oimL9tjKEkfbB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55900},"gitHead":"6438e5c50f1a2b7e8e95a62112a4f8a249621241","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"vitest run","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky","test:cov":"vitest run --coverage","test:e2e":"vitest run --config ./vitest.config.e2e.ts","start:dev":"nest start --watch","commit-msg":"commitlint -e","pre-commit":"npm run lint:staged && npm run test","start:prod":"node dist/main","test:debug":"vitest --inspect-brk --inspect --logHeapUsage --no-file-parallelism","test:watch":"vitest","lint:staged":"lint-staged","postinstall":"node scripts/patch-suites-doubles-vitest.mjs","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"ben_rasha","email":"bben.rasha@gmail.com"},"repository":{"url":"git+https://github.com/ivvan-grishchenko/nestjs-generator.git","type":"git"},"_npmVersion":"11.9.0","description":"NestJS CLI util for generating project from the templates","directories":{},"lint-staged":{"*.ts":"eslint --cache \"{src,apps,libs,test}/**/*.ts\""},"_nodeVersion":"24.14.0","dependencies":{"rxjs":"^7.8.1","chalk":"^5.6.2","fs-extra":"^11.3.4","simple-git":"^3.32.3","@nestjs/core":"^11.0.1","@nestjs/common":"^11.0.1","nest-commander":"^3.20.1","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.18.0","vitest":"^4.0.18","globals":"^16.0.0","ts-node":"^10.9.2","@swc/cli":"^0.7.10","prettier":"^3.4.2","@swc/core":"^1.15.18","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/node":"^22.10.7","lint-staged":"^16.3.1","@suites/unit":"^3.0.1","unplugin-swc":"^1.5.9","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.4.2","@nestjs/testing":"^11.0.1","@types/fs-extra":"^11.0.4","@types/supertest":"^6.0.2","@suites/di.nestjs":"^3.0.1","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","@vitest/coverage-v8":"^4.0.18","@suites/doubles.vitest":"^3.0.1","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","nest-commander-testing":"^3.5.1","eslint-plugin-perfectionist":"^5.6.0","@commitlint/config-conventional":"^20.4.2"},"_npmOperationalInternal":{"tmp":"tmp/nest-generator_1.1.0_1772725588955_0.6823451059954044","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@benrasha/nest-generator","version":"1.1.1","keywords":["nestjs","cli","generator"],"author":{"name":"Grishchenko, Ivan"},"license":"MIT","_id":"@benrasha/nest-generator@1.1.1","maintainers":[{"name":"ben_rasha","email":"bben.rasha@gmail.com"}],"homepage":"https://github.com/ivvan-grishchenko/nestjs-generator","bugs":{"url":"https://github.com/ivvan-grishchenko/nestjs-generator/issues"},"bin":{"nest-generator":"dist/main.js"},"dist":{"shasum":"5752c74921ef37674e5a33b7ba10852e67727b3b","tarball":"https://registry.npmjs.org/@benrasha/nest-generator/-/nest-generator-1.1.1.tgz","fileCount":29,"integrity":"sha512-ar8mqIRiwxrJDLue0G7HT9bnad5MTX+mV2Xw1L00K4Rjj8qx6Hu8ImtzPS+a1w7GvyEZpHPfjz5QIK58b8QPiQ==","signatures":[{"sig":"MEYCIQDU7cDXioQYJ2RRdxX9JX7sDlQQLOPrCE2Wpf2a49StOQIhAJCn3QE/rpeYL+JwcbrdcBtZpE2tlqCwc2647g7myZnl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56001},"gitHead":"09bc4104352b8ff7348726c154745434e49b8425","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"vitest run","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky","test:cov":"vitest run --coverage","test:e2e":"vitest run --config ./vitest.config.e2e.ts","start:dev":"nest start --watch","commit-msg":"commitlint -e","pre-commit":"npm run lint:staged && npm run test","start:prod":"node dist/main","test:debug":"vitest --inspect-brk --inspect --logHeapUsage --no-file-parallelism","test:watch":"vitest","lint:staged":"lint-staged","start:debug":"nest start --debug --watch","post-install":"node scripts/patch-suites-doubles-vitest.mjs"},"_npmUser":{"name":"ben_rasha","email":"bben.rasha@gmail.com"},"repository":{"url":"git+https://github.com/ivvan-grishchenko/nestjs-generator.git","type":"git"},"_npmVersion":"11.9.0","description":"NestJS CLI util for generating project from the templates","directories":{},"lint-staged":{"*.ts":"eslint --cache \"{src,apps,libs,test}/**/*.ts\""},"_nodeVersion":"24.14.0","dependencies":{"rxjs":"^7.8.1","chalk":"^5.6.2","fs-extra":"^11.3.4","simple-git":"^3.32.3","@nestjs/core":"^11.0.1","@nestjs/common":"^11.0.1","nest-commander":"^3.20.1","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.0.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.18.0","vitest":"^4.0.18","globals":"^16.0.0","ts-node":"^10.9.2","@swc/cli":"^0.7.10","prettier":"^3.4.2","@swc/core":"^1.15.18","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/node":"^22.10.7","lint-staged":"^16.3.1","@suites/unit":"^3.0.1","unplugin-swc":"^1.5.9","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.4.2","@nestjs/testing":"^11.0.1","@types/fs-extra":"^11.0.4","@types/supertest":"^6.0.2","@suites/di.nestjs":"^3.0.1","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","source-map-support":"^0.5.21","@vitest/coverage-v8":"^4.0.18","@suites/doubles.vitest":"^3.0.1","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","nest-commander-testing":"^3.5.1","eslint-plugin-perfectionist":"^5.6.0","@commitlint/config-conventional":"^20.4.2"},"_npmOperationalInternal":{"tmp":"tmp/nest-generator_1.1.1_1772790772105_0.9112109760153995","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@benrasha/nest-generator","version":"1.1.2","description":"NestJS CLI util for generating project from the templates","keywords":["nestjs","cli","generator"],"homepage":"https://github.com/ivvan-grishchenko/nestjs-generator","bugs":{"url":"https://github.com/ivvan-grishchenko/nestjs-generator/issues"},"author":{"name":"Grishchenko, Ivan"},"repository":{"type":"git","url":"git+https://github.com/ivvan-grishchenko/nestjs-generator.git"},"bin":{"nest-generator":"dist/main.js"},"license":"MIT","scripts":{"build":"nest build","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","lint:staged":"lint-staged","test":"vitest run","test:watch":"vitest","test:cov":"vitest run --coverage","test:debug":"vitest --inspect-brk --inspect --logHeapUsage --no-file-parallelism","test:e2e":"vitest run --config ./vitest.config.e2e.ts","prepare":"husky","post-install":"node scripts/patch-suites-doubles-vitest.mjs","commit-msg":"commitlint -e","pre-commit":"npm run lint:staged && npm run test"},"dependencies":{"@nestjs/common":"^11.0.1","@nestjs/core":"^11.0.1","@nestjs/platform-express":"^11.0.1","chalk":"^5.6.2","fs-extra":"^11.3.4","nest-commander":"^3.20.1","reflect-metadata":"^0.2.2","rxjs":"^7.8.1","simple-git":"^3.32.3"},"devDependencies":{"@commitlint/cli":"^20.4.2","@commitlint/config-conventional":"^20.4.2","@eslint/js":"^9.18.0","@nestjs/cli":"^11.0.0","@nestjs/schematics":"^11.0.0","@nestjs/testing":"^11.0.1","@suites/di.nestjs":"^3.0.1","@suites/doubles.vitest":"^3.0.1","@suites/unit":"^3.0.1","@swc/cli":"^0.7.10","@swc/core":"^1.15.18","@types/express":"^5.0.0","@types/fs-extra":"^11.0.4","@types/node":"^22.10.7","@types/supertest":"^6.0.2","@vitest/coverage-v8":"^4.0.18","eslint":"^9.18.0","eslint-config-prettier":"^10.0.1","eslint-plugin-perfectionist":"^5.6.0","eslint-plugin-prettier":"^5.2.2","globals":"^16.0.0","husky":"^9.1.7","lint-staged":"^16.3.1","nest-commander-testing":"^3.5.1","prettier":"^3.4.2","source-map-support":"^0.5.21","supertest":"^7.0.0","ts-loader":"^9.5.2","ts-node":"^10.9.2","tsconfig-paths":"^4.2.0","typescript":"^5.7.3","typescript-eslint":"^8.20.0","unplugin-swc":"^1.5.9","vitest":"^4.0.18"},"lint-staged":{"*.ts":"eslint --cache \"{src,apps,libs,test}/**/*.ts\""},"gitHead":"baaad9f463b002f2deb5e289d3af59205fb752b4","_id":"@benrasha/nest-generator@1.1.2","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-leHl6PnzmQtXTICRnd7TYgT3iaqx6+999fDzSIsO+z6MySISbI5kPM867ObdjD9vIKaARePNhBDSqtKYW3otig==","shasum":"14266ac1383c44b8cccb148de134217cafb1b0ba","tarball":"https://registry.npmjs.org/@benrasha/nest-generator/-/nest-generator-1.1.2.tgz","fileCount":29,"unpackedSize":55980,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benrasha%2fnest-generator@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXey01Z2vJj6K/VTbRwwy2luP1Z4Jf4A5A7SP5jdtxDAIgSFxpVvj7HlA20yaVtwTw5M1VDLifOr5GiTPrbRwxlrA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0d27173-92af-4c00-b347-d2a33fc4bd32"}},"directories":{},"maintainers":[{"name":"ben_rasha","email":"bben.rasha@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nest-generator_1.1.2_1772791828401_0.3134369818932803"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T08:53:50.532Z","modified":"2026-03-06T10:10:29.123Z","1.0.0":"2026-03-05T08:53:50.745Z","1.1.0":"2026-03-05T15:46:29.116Z","1.1.1":"2026-03-06T09:52:52.269Z","1.1.2":"2026-03-06T10:10:28.548Z"},"bugs":{"url":"https://github.com/ivvan-grishchenko/nestjs-generator/issues"},"author":{"name":"Grishchenko, Ivan"},"license":"MIT","homepage":"https://github.com/ivvan-grishchenko/nestjs-generator","keywords":["nestjs","cli","generator"],"repository":{"type":"git","url":"git+https://github.com/ivvan-grishchenko/nestjs-generator.git"},"description":"NestJS CLI util for generating project from the templates","maintainers":[{"name":"ben_rasha","email":"bben.rasha@gmail.com"}],"readme":"# nest-generator\n\nA CLI tool that scaffolds NestJS projects from configurable Git-based templates. Choose a template, and the generator clones it, copies files into your current directory, and runs `npm install`.\n\n[![npm version](https://img.shields.io/npm/v/@benrasha/nest-generator.svg)](https://www.npmjs.com/package/@benrasha/nest-generator)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## Table of contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [How it works](#how-it-works)\n- [Available templates](#available-templates)\n- [Requirements](#requirements)\n- [Development](#development)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Installation\n\n### Global install (recommended)\n\n```bash\nnpm install -g @benrasha/nest-generator\n```\n\nThen run from any directory:\n\n```bash\nnest-generator\n```\n\n### Run without installing (npx)\n\n```bash\nnpx @benrasha/nest-generator\n```\n\nOr run the `generate` command explicitly:\n\n```bash\nnpx @benrasha/nest-generator generate\n```\n\n### From source\n\n```bash\ngit clone https://github.com/ivvan-grishchenko/nestjs-generator.git\ncd nestjs-generator\nnpm ci\nnpm run build\nnode dist/main.js\n# or link globally: npm link\n```\n\n---\n\n## Usage\n\n### Commands\n\n| Command     | Alias | Description                    |\n| ----------- | ----- | ------------------------------ |\n| `generate`  | `gen` | Generate project from a template |\n\n### Basic flow\n\n1. **Go to the folder** where you want the project (can be an empty directory or an existing one; existing files may be overwritten).\n\n   ```bash\n   mkdir my-app && cd my-app\n   ```\n\n2. **Run the CLI.**\n\n   ```bash\n   nest-generator\n   # or\n   nest-generator generate\n   # or\n   nest-generator gen\n   ```\n\n3. **Choose a template** from the interactive list (arrow keys + Enter).\n\n4. The CLI will:\n   - Clone the template repository (shallow clone, single branch)\n   - Copy all files into the current directory (excluding `.git`)\n   - Run `npm install`\n\n5. When it finishes, you get a ready-to-use project in the current directory.\n\n### Example\n\n```bash\nmkdir my-nest-app\ncd my-nest-app\nnest-generator\n# Select \"nestjs-scaffold\" (or another template)\n# Wait for clone, copy, and npm install\n# Start coding\nnpm run start:dev\n```\n\n### Important notes\n\n- **Current directory**  \n  The tool always uses the **current working directory**. It does not create a new subfolder; it writes into `.` (overwriting existing files when names conflict).\n\n- **Overwrite behavior**  \n  Files from the template are copied with `overwrite: true`. Existing files in the same paths will be replaced. Use an empty directory if you want a clean scaffold.\n\n- **Network and Git**  \n  Cloning requires network access and a reachable template Git URL. The template repo is cloned with `--depth=1` and a specific branch.\n\n- **npm install**  \n  After copying, the CLI runs `npm install` in the current directory. Ensure Node.js and npm are available and that you have no lockfile/registry issues.\n\n---\n\n## How it works\n\n1. **Prompt** — You are asked to select a template from a list (names come from the built-in template config).\n2. **Clone** — The template repo is cloned into a temporary directory (`.temp-template-clone`) with a shallow clone of the configured branch.\n3. **Copy** — All files from that temp directory are copied into `process.cwd()`, excluding `.git`.\n4. **Install** — `npm install` is executed in the current directory.\n5. **Cleanup** — The temporary directory is removed. On failure, cleanup is still attempted.\n\nThe temporary directory is created under the current working directory and is removed when the command exits (success or failure).\n\n---\n\n## Available templates\n\nTemplates are defined in the CLI and point to Git repositories and branches.\n\n| Template ID       | Description           | Repository |\n| ----------------- | --------------------- | ---------- |\n| `nestjs-scaffold` | Basic NestJS scaffold | [nestjs-scaffold](https://github.com/ivvan-grishchenko/nestjs-scaffold) |\n\nMore templates can be added in future releases. The list is fixed at runtime (no config file for end users).\n\n---\n\n## Requirements\n\n- **Node.js** — Compatible with the version used by the template (e.g. LTS). The project uses Node 24 in development (see `.nvmrc`).\n- **npm** — Used to run `npm install` after copying files.\n- **Git** — Used internally to clone template repositories.\n- **Network** — Required to clone the template and install dependencies.\n\n---\n\n## Development\n\n### Setup\n\n```bash\ngit clone https://github.com/ivvan-grishchenko/nestjs-generator.git\ncd nestjs-generator\nnpm ci\n```\n\n### Scripts\n\n| Script           | Description                          |\n| ---------------- | ------------------------------------ |\n| `npm run build`  | Build the CLI (output in `dist/`)    |\n| `npm run start`  | Run the built CLI                    |\n| `npm run start:dev` | Run in watch mode                  |\n| `npm run lint`   | Run ESLint                           |\n| `npm run format` | Format with Prettier                 |\n| `npm run test`   | Run unit tests (Vitest)              |\n| `npm run test:e2e` | Run e2e tests (Vitest)            |\n| `npm run test:cov` | Run tests with coverage            |\n\n### Adding a new template\n\nTemplates are defined in `src/generate-command/generate.constant.ts`. Each entry has:\n\n- **Key** — Template ID shown in the list (e.g. `nestjs-scaffold`).\n- **repo** — Git clone URL.\n- **branch** — Branch to clone (e.g. `main`).\n- **description** — Short description (used in the codebase; the list currently shows template IDs).\n\nExample:\n\n```ts\nexport const TEMPLATES: Record<string, TemplateConfig> = {\n  'nestjs-scaffold': {\n    branch: 'main',\n    description: 'Basic NestJS scaffold',\n    repo: 'https://github.com/ivvan-grishchenko/nestjs-scaffold.git',\n  },\n  'my-new-template': {\n    branch: 'main',\n    description: 'My custom NestJS template',\n    repo: 'https://github.com/username/my-nest-template.git',\n  },\n};\n```\n\nAfter adding a template, rebuild and run the CLI to see it in the list.\n\n### Code quality\n\n- **ESLint** — Linting (including lint-staged on commit).\n- **Prettier** — Formatting.\n- **Husky** — Pre-commit (lint-staged + tests) and commit-msg (Commitlint).\n- **Commitlint** — Conventional commits (e.g. `feat:`, `fix:`).\n\nCommits should follow the configured conventional format so the commit-msg hook passes.\n\n---\n\n## Contributing\n\n1. Open an issue or pick an existing one.\n2. Fork the repo, create a branch, make your changes.\n3. After installing dependencies, run `npm run post-install` once to apply local-only test patches.\n4. Run `npm run lint`, `npm run test`, and `npm run test:e2e`.\n5. Commit using conventional commits (Commitlint is enforced).\n6. Push and open a pull request.\n\nBug reports and feature ideas are welcome via [GitHub Issues](https://github.com/ivvan-grishchenko/nestjs-generator/issues).\n\n---\n\n## License\n\n[MIT](https://opensource.org/licenses/MIT)\n","readmeFilename":"README.md"}