release: v12.0.0 major release (approx. Q3 2026)#2302
release: v12.0.0 major release (approx. Q3 2026)#2302kamilmysliwiec wants to merge 15 commits intomasterfrom
Conversation
|
A current version of this PR has been published under the |
There was a problem hiding this comment.
Pull request overview
This PR prepares the schematics package for the v12.0.0 major release by migrating the repo (and generated outputs) toward ESM + Vitest, removing the Angular client-app schematic, and updating multiple generators/templates to emit ESM-compatible import specifiers.
Changes:
- Switch repo tooling from Jest/Gulp to Vitest +
tsc -bproject references, and add Vitest/TS configs. - Add an ESM-first
ts-esmapplication template (Vitest-based) and introducetype: esm|cjsselection in the application schematic. - Update many schematics/templates to emit
.jsextensions in relative imports for ESM projects, and remove the Angular client-app schematic.
Reviewed changes
Copilot reviewed 134 out of 140 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| vitest.config.ts | Adds Vitest runner configuration for the schematics repo. |
| tsconfig.test.json | Adds test tsconfig for Vitest types and project references. |
| tsconfig.lib.json | Converts library build tsconfig to extend the new NodeNext base config. |
| tsconfig.json | Converts root tsconfig into a solution-style config with project references (NodeNext). |
| tools/gulp/tsconfig.json | Removes gulp TypeScript build config. |
| tools/gulp/tasks/clean.ts | Removes gulp clean task implementation. |
| tools/gulp/gulpfile.ts | Removes gulp task entrypoint. |
| tools/gulp/config.ts | Removes gulp task configuration. |
| test/utils/path.solver.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/object-sorting.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/name.parser.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/module.finder.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/module.declarator.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/module-metadata.declarator.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/module-import.declarator.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/metadata.manager.test.ts | Updates test imports for ESM (.js extension). |
| test/utils/formatting.test.ts | Updates test imports for ESM (.js extension). |
| test/lib/readers/file-system.reader.spec.ts | Migrates a Jest mock to Vitest (vi.mock). |
| src/utils/source-root.helpers.ts | Adds isEsmProject() helper and updates defaults import to ESM path. |
| src/utils/object-sorting.ts | Formatting-only update to function signature. |
| src/utils/module.declarator.ts | Adds isEsm?: boolean option and updates internal imports to .js. |
| src/utils/module-metadata.declarator.ts | Updates internal imports to .js. |
| src/utils/module-import.declarator.ts | Appends .js to generated relative import paths when isEsm is set. |
| src/utils/metadata.manager.ts | Updates internal imports to .js. |
| src/utils/index.ts | Converts barrel exports to explicit .js specifiers. |
| src/utils/dependencies.utils.ts | Updates JSONFile import to .js. |
| src/lib/sub-app/workspace/ts/tsconfig.app.json | Switches app tsconfig to composite/declaration for project refs. |
| src/lib/sub-app/sub-app.factory.ts | Adds solution-style tsconfig updates, rspack builder default, and ESM-aware templating. |
| src/lib/sub-app/sub-app.factory.test.ts | Adds tests for rspack default, solution tsconfig refs, and ESM .js imports. |
| src/lib/sub-app/files/ts/tsconfig.app.json | Updates generated tsconfig.app.json to composite/declaration. |
| src/lib/sub-app/files/ts/test/app.e2e-specFileSuffix.ts | Adds conditional .js extension in ESM imports. |
| src/lib/sub-app/files/ts/src/main.ts | Adds conditional .js extension and conditional top-level await for ESM. |
| src/lib/sub-app/files/ts/src/name.module.ts | Adds conditional .js extensions in ESM imports. |
| src/lib/sub-app/files/ts/src/name.controller.ts | Adds conditional .js extension in ESM imports. |
| src/lib/sub-app/files/ts/src/name.controller.specFileSuffix.ts | Adds conditional .js extensions in ESM imports. |
| src/lib/service/service.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/service/service.factory.test.ts | Adds ESM assertions for .js imports and updates app options with type. |
| src/lib/service/files/ts/name.service.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/resource/resource.factory.ts | Migrates imports to ESM paths/default import style and propagates isEsm. |
| src/lib/resource/resource.factory.test.ts | Adds ESM test coverage for .js imports in generated spec files. |
| src/lib/resource/files/ts/name.service.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/resource/files/ts/name.resolver.specFileSuffix.ts | Adds conditional .js extensions in ESM imports. |
| src/lib/resource/files/ts/name.gateway.specFileSuffix.ts | Adds conditional .js extensions in ESM imports. |
| src/lib/resource/files/ts/name.controller.specFileSuffix.ts | Adds conditional .js extensions in ESM imports. |
| src/lib/resolver/resolver.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/resolver/resolver.factory.test.ts | Adds ESM assertions for .js imports in module edits and spec generation. |
| src/lib/resolver/files/ts/name.resolver.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/readers/index.ts | Converts reader barrel exports to explicit .js specifiers. |
| src/lib/readers/file-system.reader.ts | Updates Reader import to .js. |
| src/lib/provider/provider.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/provider/provider.factory.test.ts | Adds ESM assertions for .js imports and updates app options with type. |
| src/lib/provider/files/ts/name.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/pipe/pipe.factory.ts | Detects ESM projects and templates .js imports for ESM output. |
| src/lib/pipe/pipe.factory.test.ts | Adds ESM assertion for .js import in generated spec. |
| src/lib/pipe/files/ts/name.pipe.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/module/module.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/module/module.factory.test.ts | Adds ESM assertion for .js imports in updated app module. |
| src/lib/middleware/middleware.factory.ts | Detects ESM projects and templates .js imports for ESM output. |
| src/lib/middleware/middleware.factory.test.ts | Adds ESM assertion for .js import in generated spec. |
| src/lib/middleware/files/ts/name.middleware.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/library/schema.json | Adds specFileSuffix option to library schematic schema. |
| src/lib/library/library.schema.d.ts | Adds specFileSuffix typing/docs to library options. |
| src/lib/library/library.factory.ts | Adds ESM detection for templating, rspack builder default, and custom spec suffix handling. |
| src/lib/library/library.factory.test.ts | Adds tests for custom spec suffix, rspack builder behavior, paths updates, and ESM imports. |
| src/lib/library/files/ts/tsconfig.lib.json | Makes generated lib tsconfig composite and suffix-aware excludes. |
| src/lib/library/files/ts/src/index.ts | Adds conditional .js in barrel exports for ESM projects. |
| src/lib/library/files/ts/src/name.service.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/library/files/ts/src/name.module.ts | Adds conditional .js extension in ESM import. |
| src/lib/interface/interface.factory.ts | Updates imports to .js and uses type-only schema import. |
| src/lib/interface/interface.factory.test.ts | Updates schema import to type-only .js. |
| src/lib/interceptor/interceptor.factory.ts | Detects ESM projects and templates .js imports for ESM output. |
| src/lib/interceptor/interceptor.factory.test.ts | Adds ESM assertion for .js import in generated spec. |
| src/lib/interceptor/files/ts/name.interceptor.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/guard/guard.factory.ts | Detects ESM projects and templates .js imports for ESM output. |
| src/lib/guard/guard.factory.test.ts | Adds ESM assertion for .js import in generated spec. |
| src/lib/guard/files/ts/name.guard.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/gateway/gateway.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/gateway/gateway.factory.test.ts | Adds ESM assertions for .js imports in module edits and spec generation. |
| src/lib/gateway/files/ts/name.gateway.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/filter/filter.factory.ts | Detects ESM projects and templates .js imports for ESM output. |
| src/lib/filter/filter.factory.test.ts | Adds ESM assertion for .js import in generated spec. |
| src/lib/filter/files/ts/name.filter.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/decorator/files/ts/name.decorator.ts | Switches decorator template to Reflector.createDecorator. |
| src/lib/decorator/files/js/name.decorator.js | Switches decorator template to Reflector.createDecorator. |
| src/lib/decorator/decorator.factory.ts | Updates imports to .js and uses type-only schema import. |
| src/lib/decorator/decorator.factory.test.ts | Updates expected output to Reflector.createDecorator usage. |
| src/lib/controller/files/ts/name.controller.specFileSuffix.ts | Adds conditional .js extension in ESM import. |
| src/lib/controller/controller.factory.ts | Detects ESM projects and passes isEsm into declarator for .js imports. |
| src/lib/controller/controller.factory.test.ts | Adds ESM assertions for .js imports in module edits and spec generation. |
| src/lib/configuration/configuration.factory.ts | Updates defaults import to .js and uses type-only schema import. |
| src/lib/configuration/configuration.factory.test.ts | Updates schema import to type-only .js. |
| src/lib/client-app/angular/schema.json | Removes Angular client-app schema. |
| src/lib/client-app/angular/files/loaders/noop.loader.ts | Removes Angular client-app loader. |
| src/lib/client-app/angular/files/loaders/fastify.loader.ts | Removes Angular client-app loader. |
| src/lib/client-app/angular/files/loaders/express.loader.ts | Removes Angular client-app loader. |
| src/lib/client-app/angular/files/loaders/abstract.loader.ts | Removes Angular client-app loader base. |
| src/lib/client-app/angular/files/interfaces/angular-options.interface.ts | Removes Angular client-app options interface. |
| src/lib/client-app/angular/files/angular.utils.ts | Removes Angular client-app package loader utility. |
| src/lib/client-app/angular/files/angular.providers.ts | Removes Angular client-app providers. |
| src/lib/client-app/angular/files/angular.module.ts | Removes Angular client-app module. |
| src/lib/client-app/angular/files/angular.constants.ts | Removes Angular client-app constants. |
| src/lib/client-app/angular/angular.schema.d.ts | Removes Angular schematic type definitions. |
| src/lib/client-app/angular/angular.factory.ts | Removes Angular schematic factory implementation. |
| src/collection.json | Removes angular-app schematic entry from the collection. |
| src/lib/application/schema.json | Adds type (esm/cjs) choice and updates strict default. |
| src/lib/application/files/ts/tsconfig.json | Simplifies tsconfig strictness flags and removes baseUrl. |
| src/lib/application/files/ts/package.json | Updates devDeps and moves Jest config into a file. |
| src/lib/application/files/ts/jest.config.ts | Adds explicit Jest config file for TS template. |
| src/lib/application/files/ts/eslint.config.mjs | Converts ESLint config export to an array-based flat config. |
| src/lib/application/files/ts-esm/vitest.config.ts | Adds Vitest config for ESM TS application template. |
| src/lib/application/files/ts-esm/vitest.config.e2e.ts | Adds E2E Vitest config for ESM TS application template. |
| src/lib/application/files/ts-esm/tsconfig.json | Adds NodeNext ESM tsconfig template (Vitest types included). |
| src/lib/application/files/ts-esm/tsconfig.build.json | Adds build-only exclusions for ESM TS template. |
| src/lib/application/files/ts-esm/test/app.e2e-specFileSuffix.ts | Adds ESM E2E test template using .js imports and default import for supertest. |
| src/lib/application/files/ts-esm/src/main.ts | Adds ESM main template using top-level await and .js import. |
| src/lib/application/files/ts-esm/src/app.service.ts | Adds ESM service template. |
| src/lib/application/files/ts-esm/src/app.module.ts | Adds ESM module template with .js imports. |
| src/lib/application/files/ts-esm/src/app.controller.ts | Adds ESM controller template with .js imports. |
| src/lib/application/files/ts-esm/src/app.controller.specFileSuffix.ts | Adds ESM unit test template with .js imports. |
| src/lib/application/files/ts-esm/package.json | Adds ESM package.json template using Vitest scripts and "type":"module". |
| src/lib/application/files/ts-esm/nest-cli.json | Adds nest-cli config template for ESM app variant. |
| src/lib/application/files/ts-esm/eslint.config.mjs | Adds ESLint flat config for ESM template with sourceType: 'module'. |
| src/lib/application/files/ts-esm/README.md | Adds README template for ESM/Vitest starter. |
| src/lib/application/files/ts-esm/.prettierrc | Adds Prettier config template for ESM starter. |
| src/lib/application/files/ts-esm/.gitignore | Adds gitignore template for ESM starter. |
| src/lib/application/files/js/package.json | Moves JS template Jest config out of package.json. |
| src/lib/application/files/js/jest.config.js | Adds explicit Jest config file for JS template. |
| src/lib/application/application.schema.d.ts | Adds type option typing/docs (esm/cjs). |
| src/lib/application/application.factory.ts | Adds type handling to choose ts-esm template directory. |
| src/lib/application/application.factory.test.ts | Adds extensive test coverage for esm/cjs template selection and outputs. |
| src/index.ts | Updates exports to ESM .js barrel paths. |
| package.json | Bumps version, marks package as ESM, replaces Jest with Vitest, changes build/clean/test scripts. |
| jest.json | Removes Jest config file (migrated to Vitest). |
| gulpfile.js | Removes gulp bootstrap file (clean no longer uses gulp). |
| eslint.config.mjs | Updates root ESLint config (drops Jest globals and adjusts rules). |
| .gitignore | Adds *.tsbuildinfo ignores for project references builds. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
@kamilmysliwiec I've opened a new pull request, #2305, to work on those changes. Once the pull request is ready, I'll request review from you. |
|
@kamilmysliwiec I've opened a new pull request, #2306, to work on those changes. Once the pull request is ready, I'll request review from you. |
Co-authored-by: kamilmysliwiec <23244943+kamilmysliwiec@users.noreply.github.com>
fix: replace non-portable `find -delete` with `del-cli` in clean script
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
Description
Approximate release window: early Q3 2026
A brief list of changes:
ts-esmversion of theapplicationschematic that generates an ESM-first NestJS boilerplate starter with vitest instead of Jest. Folks who still knowingly prefer using CJS can just pick that variant while generating an appangularschematic has been removeddecoratorschematic now uses the preferredReflector.createDecoratorway of creating custom decoratorsDoes this PR introduce a breaking change?
Other information