chore: pin Node 20 (LTS) and pnpm 10.34.3
Unpinned `pnpm@latest` in the Dockerfile made fresh builds non-reproducible: `latest` now resolves to pnpm 11, but the committed lockfile targets pnpm 10, so `pnpm install --frozen-lockfile` fails with ERR_PNPM_LOCKFILE_CONFIG_MISMATCH on a clean host. Pin pnpm to 10.34.3 across the Dockerfile, the `packageManager` field, and the release workflow; pin Node to 20 (LTS) via `.nvmrc` and `engines` so Docker, CI, and from-source builds all use the same tested toolchain. Also corrects the docs: the lockfile is v9.0 (requires pnpm 10, not "pnpm 8+"), and "Node 20+" implied untested newer majors were supported.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
[](LICENSE)
|
||||
[](https://www.typescriptlang.org/)
|
||||
[](https://nodejs.org/)
|
||||
[](https://nodejs.org/)
|
||||
[](#project-status)
|
||||
|
||||
</div>
|
||||
@@ -257,7 +257,10 @@ The stack runs three services via Docker Compose:
|
||||
|
||||
## Development
|
||||
|
||||
Requirements: **Node.js 20+** and **pnpm 8+**.
|
||||
Requirements: **Node.js 20 (LTS)** and **pnpm 10** — both are pinned (`.nvmrc` +
|
||||
the `packageManager` field), so `nvm use` and Corepack select the right versions
|
||||
automatically. Newer Node majors are untested; the Docker image always builds on
|
||||
Node 20 regardless of your host.
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
@@ -382,7 +385,7 @@ packages/
|
||||
|
||||
| Layer | Technology |
|
||||
|--------------|------------|
|
||||
| Server | Node.js 20+, Fastify 4, TypeScript (strict) |
|
||||
| Server | Node.js 20 (LTS), Fastify 4, TypeScript (strict) |
|
||||
| Database | SQLite (better-sqlite3) + Drizzle ORM |
|
||||
| Auth | JWT + bcrypt |
|
||||
| Frontend | React 18, Vite 6, Tailwind CSS 3, Zustand 5 |
|
||||
|
||||
Reference in New Issue
Block a user