Skip to content
This repository was archived by the owner on Jul 27, 2026. It is now read-only.

Commit b6a489d

Browse files
committed
chore(cli): production hardening for 4.0 GA
- Enable strictNullChecks and fix all resulting errors - Remove unused deps (semver, shx, reflect-metadata, @codecov/vite-plugin) and decorator tsconfig flags (no decorators in the CLI) - TS7-clean tsconfig (node16 resolution, explicit rootDir) - Rewrite degit invocation test against the real template-ref resolution - Isolate pricing-manager tests from the real ~/.expressots disk cache - Delete placeholder test and dead src/index.ts facade - Rename nonopininated-cmd.ts to nonopinionated-cmd.ts - CI: drop pull_request_target, CodeQL Node 20.19.0, chore dependabot prefix, remove stale .tool-versions - Backfill CHANGELOG through preview.3.4 (Node floor corrected to 20.19.0)
1 parent f236da6 commit b6a489d

25 files changed

Lines changed: 5419 additions & 6710 deletions

‎.github/dependabot.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# .github/dependabot.yml
2-
# Dependabot configuration must live at .github/dependabot.yml — it is NOT
3-
# a workflow. Previously the config sat under `.github/workflows/` where
2+
# Dependabot configuration must live at .github/dependabot.yml (it is NOT
3+
# a workflow). Previously the config sat under `.github/workflows/` where
44
# GitHub silently ignored it. Moved here so daily dependency PRs actually
55
# fire.
66
version: 2
@@ -10,6 +10,6 @@ updates:
1010
schedule:
1111
interval: "daily"
1212
commit-message:
13-
prefix: feat
14-
prefix-development: feat
13+
prefix: chore
14+
prefix-development: chore
1515
open-pull-requests-limit: 99

‎.github/workflows/build.yml‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ on:
77
- feature/v4.0
88
pull_request:
99
branches: ["main", "feature/v4.0"]
10-
pull_request_target:
11-
types: [opened, synchronize, reopened]
1210

1311
permissions:
1412
contents: read

‎.github/workflows/codeql-analysis.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
fail-fast: false
2323
matrix:
2424
language: ["typescript", "javascript"]
25-
node-version: ["20.18.0"]
25+
node-version: ["20.19.0"]
2626

2727
steps:
2828
- name: Checkout repository

‎.tool-versions‎

Lines changed: 0 additions & 2 deletions
This file was deleted.

‎CHANGELOG.md‎

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,55 @@
1+
## [4.0.0-preview.3.4](https://github.com/expressots/expressots-cli/compare/4.0.0-preview.3.3...4.0.0-preview.3.4) (2026-06-13)
2+
3+
### Features
4+
5+
* **dev:** improved file watching and environment handling for `expressots dev` ([9caaac3](https://github.com/expressots/expressots-cli/commit/9caaac3))
6+
7+
### Bug Fixes
8+
9+
* **new:** scaffold the pnpm `allowBuilds` config only when pnpm is the selected package manager ([98239b8](https://github.com/expressots/expressots-cli/commit/98239b8))
10+
11+
### Code Refactoring
12+
13+
* **cli:** removed the Node.js version check from project creation; the `engines` field is the single source of truth ([612d684](https://github.com/expressots/expressots-cli/commit/612d684))
14+
15+
### Build System
16+
17+
* declared `files` in package.json so published artifacts contain only README, LICENSE, CHANGELOG, and the `bin` output ([a0de8cd](https://github.com/expressots/expressots-cli/commit/a0de8cd))
18+
19+
## [4.0.0-preview.3.3](https://github.com/expressots/expressots-cli/compare/4.0.0-preview.3.2...4.0.0-preview.3.3) (2026-06-10)
20+
21+
### Features
22+
23+
* **openapi:** new `expressots openapi emit` command for generating OpenAPI specs ([3a22c20](https://github.com/expressots/expressots-cli/commit/3a22c20))
24+
25+
## [4.0.0-preview.3.2](https://github.com/expressots/expressots-cli/compare/4.0.0-preview.3.1...4.0.0-preview.3.2) (2026-06-06)
26+
27+
* Republish of 4.0.0-preview.3.1 with no code changes.
28+
29+
## [4.0.0-preview.3.1](https://github.com/expressots/expressots-cli/compare/4.0.0-preview.3...4.0.0-preview.3.1) (2026-06-06)
30+
31+
### Features
32+
33+
* **cli:** structured, grouped help screens for top-level and per-command help, with detailed choices and descriptions ([e1e4507](https://github.com/expressots/expressots-cli/commit/e1e4507), [21f59b4](https://github.com/expressots/expressots-cli/commit/21f59b4))
34+
* **dev/build/prod:** graceful shutdown process management; the parent process now waits for all child processes to exit ([bf8b647](https://github.com/expressots/expressots-cli/commit/bf8b647))
35+
* **cicd:** package-manager-aware command generation (npm, yarn, pnpm, bun) across all supported CI/CD platforms, with improved lockfile handling ([7e6b4ec](https://github.com/expressots/expressots-cli/commit/7e6b4ec))
36+
37+
### Bug Fixes
38+
39+
* **new:** middleware preset placeholder and preset files are applied before `npm install`, so a failed install still leaves a runnable scaffold ([ba03a33](https://github.com/expressots/expressots-cli/commit/ba03a33))
40+
* **security:** upgraded release-it 17 to 20, @release-it/conventional-changelog 8 to 11, and inquirer 8.2.6 to 8.2.7 ([f96f02c](https://github.com/expressots/expressots-cli/commit/f96f02c))
41+
* **cli:** deterministic help output in tests via `NO_COLOR` ([4c99278](https://github.com/expressots/expressots-cli/commit/4c99278))
42+
43+
### Code Refactoring
44+
45+
* **containerize:** structured output, warnings, and clearer error messages during containerization ([3820955](https://github.com/expressots/expressots-cli/commit/3820955))
46+
* **info:** async `infoForm` with more detailed OS information ([4ceec78](https://github.com/expressots/expressots-cli/commit/4ceec78))
47+
48+
### Continuous Integrations
49+
50+
* issue template refresh and Expressots Project sync workflow ([9958a2e](https://github.com/expressots/expressots-cli/commit/9958a2e))
51+
* lint-staged plus husky hooks for pre-commit lint and format ([e2e8953](https://github.com/expressots/expressots-cli/commit/e2e8953), [b118edf](https://github.com/expressots/expressots-cli/commit/b118edf))
52+
153
## [4.0.0-preview.3](https://github.com/expressots/expressots-cli/compare/3.0.0...4.0.0-preview.3) (2026-05-25)
254

355
Part of the ExpressoTS **v4.0.0 preview bundle**. See the [v4.0.0 release notes](https://expresso-ts.com/docs/4.0.0/prologue/release) and the [CLI reference](https://expresso-ts.com/docs/4.0.0/cli/overview) for the full picture.
@@ -32,7 +84,7 @@ Part of the ExpressoTS **v4.0.0 preview bundle**. See the [v4.0.0 release notes]
3284

3385
### Build System
3486

35-
* `expressots-cli` now requires Node.js 20.18.0+.
87+
* `expressots-cli` now requires Node.js 20.19.0+.
3688
* `release-it` upgraded to 17.6.0 with `@release-it/conventional-changelog@8.0.1`; commit message normalised to `chore(release): ${version}` for consistency with the rest of the framework.
3789

3890
## [3.0.0](https://github.com/expressots/expressots-cli/compare/3.0.0-beta.3...3.0.0) (2024-12-04)

‎README.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@
3030
npm i -g @expressots/cli
3131
```
3232

33+
### Preview releases (4.0)
34+
35+
Preview builds are published under the `next` dist-tag. To try the 4.0 preview without a global install:
36+
37+
```bash
38+
npx @expressots/cli@next new my-app
39+
```
40+
41+
Note for preview consumers: scaffolding fetches templates from [expressots/templates](https://github.com/expressots/templates) at the git tag matching the CLI version (for example, CLI `4.0.0-preview.3.4` clones the `v4.0.0-preview.3.4` templates tag), so the CLI and its templates always move together.
42+
3343
## What This Package Does
3444

3545
The ExpressoTS CLI creates new projects, generates controllers, use-cases, providers, and modules, manages CI/CD pipelines, Docker and Kubernetes configs, and handles deployment workflows, all from the terminal.

‎jest.config.ts‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@ const config: JestConfigWithTsJest = {
2929
moduleNameMapper: {
3030
"^@src/(.*)$": "<rootDir>/src/$1",
3131
},
32-
setupFiles: ["reflect-metadata"],
3332
transform: {
3433
"^.+\\.ts$": [
3534
"ts-jest",
3635
{
3736
tsconfig: "tsconfig.json",
38-
// Add any ts-jest specific options here
37+
// ts-jest warns (TS151002) that Node16 module resolution
38+
// prefers isolatedModules: true, but enabling it triggers a
39+
// ts-jest transpiler bug on TypeScript 5.2 (JSDocParsingMode
40+
// is 5.3+). Suppress the advisory until the TS toolchain
41+
// upgrade lands.
42+
diagnostics: { ignoreCodes: [151002] },
3943
},
4044
],
4145
},

0 commit comments

Comments
 (0)