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:
@@ -67,7 +67,7 @@ jobs:
|
|||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 10
|
version: 10.34.3
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
|
|||||||
+3
-1
@@ -40,7 +40,9 @@ Signing is automatic and takes one comment:
|
|||||||
|
|
||||||
## Development setup
|
## Development setup
|
||||||
|
|
||||||
Requirements: **Node.js 20+** and **pnpm 8+**.
|
Requirements: **Node.js 20 (LTS)** and **pnpm 10**. Run `nvm use` (reads
|
||||||
|
`.nvmrc`); Corepack activates the pinned pnpm from the `packageManager` field
|
||||||
|
automatically — don't install pnpm globally.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pnpm install # install all workspace dependencies
|
pnpm install # install all workspace dependencies
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@
|
|||||||
# Stage 1: Install dependencies and build frontend
|
# Stage 1: Install dependencies and build frontend
|
||||||
FROM node:20-slim AS builder
|
FROM node:20-slim AS builder
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
RUN corepack enable && corepack prepare pnpm@10.34.3 --activate
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ RUN pnpm --filter @backspace/web build
|
|||||||
# Stage 2: Production runtime
|
# Stage 2: Production runtime
|
||||||
FROM node:20-slim AS runtime
|
FROM node:20-slim AS runtime
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
RUN corepack enable && corepack prepare pnpm@10.34.3 --activate
|
||||||
|
|
||||||
# Install build dependencies for better-sqlite3 native module
|
# Install build dependencies for better-sqlite3 native module
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
[](https://www.typescriptlang.org/)
|
[](https://www.typescriptlang.org/)
|
||||||
[](https://nodejs.org/)
|
[](https://nodejs.org/)
|
||||||
[](#project-status)
|
[](#project-status)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -257,7 +257,10 @@ The stack runs three services via Docker Compose:
|
|||||||
|
|
||||||
## Development
|
## 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
|
```bash
|
||||||
pnpm install
|
pnpm install
|
||||||
@@ -382,7 +385,7 @@ packages/
|
|||||||
|
|
||||||
| Layer | Technology |
|
| 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 |
|
| Database | SQLite (better-sqlite3) + Drizzle ORM |
|
||||||
| Auth | JWT + bcrypt |
|
| Auth | JWT + bcrypt |
|
||||||
| Frontend | React 18, Vite 6, Tailwind CSS 3, Zustand 5 |
|
| Frontend | React 18, Vite 6, Tailwind CSS 3, Zustand 5 |
|
||||||
|
|||||||
+3
-2
@@ -38,8 +38,9 @@
|
|||||||
"uiohook-napi@1.5.5": "patches/uiohook-napi@1.5.5.patch"
|
"uiohook-napi@1.5.5": "patches/uiohook-napi@1.5.5.patch"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"packageManager": "pnpm@10.34.3",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.0.0",
|
"node": ">=20.0.0 <21.0.0",
|
||||||
"pnpm": ">=8.0.0"
|
"pnpm": ">=10.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user