build(deps): update pnpm to v11.1.2 and enforce workspace settings

Upgrade pnpm version to 11.1.2 across Dockerfile, workflows, and package.json.
Add pnpm-workspace.yaml to enable workspace features. Update all docs-related
scripts and CI jobs to use --ignore-workspace for isolated docs-site installs.
Set packageManager field in package.json for explicit version control.

This ensures consistent dependency management and prepares for multi-package
workspace support.
This commit is contained in:
Richard R 2026-05-14 14:25:29 -06:00
parent 80f9386a6c
commit 288af0f370
7 changed files with 34 additions and 31 deletions

View file

@ -21,7 +21,7 @@ jobs:
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
with: with:
version: 9 version: 11
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
@ -31,7 +31,7 @@ jobs:
cache-dependency-path: docs-site/pnpm-lock.yaml cache-dependency-path: docs-site/pnpm-lock.yaml
- name: Install docs dependencies - name: Install docs dependencies
run: pnpm --dir docs-site install --frozen-lockfile run: pnpm --ignore-workspace --dir docs-site install --frozen-lockfile
- name: Build docs - name: Build docs
run: pnpm --dir docs-site build run: pnpm --ignore-workspace --dir docs-site build

View file

@ -39,7 +39,7 @@ jobs:
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
with: with:
version: 9 version: 11
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
@ -49,7 +49,7 @@ jobs:
cache-dependency-path: docs-site/pnpm-lock.yaml cache-dependency-path: docs-site/pnpm-lock.yaml
- name: Install docs dependencies - name: Install docs dependencies
run: pnpm --dir docs-site install --frozen-lockfile run: pnpm --ignore-workspace --dir docs-site install --frozen-lockfile
- name: Build changelog feed - name: Build changelog feed
env: env:
@ -59,7 +59,7 @@ jobs:
run: node scripts/build-changelog-feed.mjs run: node scripts/build-changelog-feed.mjs
- name: Build docs - name: Build docs
run: pnpm --dir docs-site build run: pnpm --ignore-workspace --dir docs-site build
- name: Upload Pages artifact - name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v3

View file

@ -32,7 +32,7 @@ jobs:
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
with: with:
version: 9 version: 11
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
@ -42,7 +42,7 @@ jobs:
cache-dependency-path: docs-site/pnpm-lock.yaml cache-dependency-path: docs-site/pnpm-lock.yaml
- name: Install docs dependencies - name: Install docs dependencies
run: pnpm --dir docs-site install --frozen-lockfile run: pnpm --ignore-workspace --dir docs-site install --frozen-lockfile
- name: Snapshot docs version - name: Snapshot docs version
env: env:
@ -52,11 +52,11 @@ jobs:
if [ -f docs-site/versions.json ] && grep -q "\"${VERSION}\"" docs-site/versions.json; then if [ -f docs-site/versions.json ] && grep -q "\"${VERSION}\"" docs-site/versions.json; then
echo "Version ${VERSION} already exists in versions.json; skipping docs:version" echo "Version ${VERSION} already exists in versions.json; skipping docs:version"
else else
pnpm --dir docs-site docusaurus docs:version "${VERSION}" pnpm --ignore-workspace --dir docs-site docusaurus docs:version "${VERSION}"
fi fi
- name: Build docs - name: Build docs
run: pnpm --dir docs-site build run: pnpm --ignore-workspace --dir docs-site build
- name: Commit docs snapshot - name: Commit docs snapshot
id: commit_snapshot id: commit_snapshot

View file

@ -20,7 +20,7 @@ jobs:
node-version: lts/* node-version: lts/*
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
version: 9 version: 11
- name: Install system dependencies - name: Install system dependencies
run: | run: |
sudo apt-get update sudo apt-get update

View file

@ -24,7 +24,7 @@ RUN cp "$(command -v weed)" /tmp/weed && \
FROM node:lts-alpine AS app-builder FROM node:lts-alpine AS app-builder
# Install pnpm globally # Install pnpm globally
RUN npm install -g pnpm RUN npm install -g pnpm@11.1.2
# Create app directory # Create app directory
WORKDIR /app WORKDIR /app
@ -60,7 +60,7 @@ FROM node:lts-alpine AS runner
RUN apk add --no-cache ca-certificates libreoffice-writer RUN apk add --no-cache ca-certificates libreoffice-writer
# Install pnpm globally for running the app # Install pnpm globally for running the app
RUN npm install -g pnpm RUN npm install -g pnpm@11.1.2
# App runtime directory # App runtime directory
WORKDIR /app WORKDIR /app

View file

@ -2,6 +2,7 @@
"name": "openreader", "name": "openreader",
"version": "3.0.0", "version": "3.0.0",
"private": true, "private": true,
"packageManager": "pnpm@11.1.2",
"scripts": { "scripts": {
"dev": "node scripts/openreader-entrypoint.mjs -- pnpm dev:raw", "dev": "node scripts/openreader-entrypoint.mjs -- pnpm dev:raw",
"dev:raw": "next dev --turbopack -p 3003", "dev:raw": "next dev --turbopack -p 3003",
@ -14,12 +15,12 @@
"migrate-fs": "node scripts/migrate-fs-v2.mjs", "migrate-fs": "node scripts/migrate-fs-v2.mjs",
"migrate-fs:dry-run": "node scripts/migrate-fs-v2.mjs --dry-run true", "migrate-fs:dry-run": "node scripts/migrate-fs-v2.mjs --dry-run true",
"generate": "node drizzle/scripts/generate.mjs", "generate": "node drizzle/scripts/generate.mjs",
"docs:init": "pnpm --dir docs-site install", "docs:init": "pnpm --ignore-workspace --dir docs-site install",
"docs:dev": "pnpm --dir docs-site start", "docs:dev": "pnpm --ignore-workspace --dir docs-site start",
"docs:build": "pnpm --dir docs-site build", "docs:build": "pnpm --ignore-workspace --dir docs-site build",
"docs:serve": "pnpm --dir docs-site serve", "docs:serve": "pnpm --ignore-workspace --dir docs-site serve",
"docs:version": "pnpm --dir docs-site docusaurus docs:version", "docs:version": "pnpm --ignore-workspace --dir docs-site docusaurus docs:version",
"docs:clear": "pnpm --dir docs-site clear" "docs:clear": "pnpm --ignore-workspace --dir docs-site clear"
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.987.0", "@aws-sdk/client-s3": "^3.987.0",
@ -79,17 +80,5 @@
"postcss": "^8.5.6", "postcss": "^8.5.6",
"tailwindcss": "^3.4.19", "tailwindcss": "^3.4.19",
"typescript": "^5.9.3" "typescript": "^5.9.3"
},
"pnpm": {
"onlyBuiltDependencies": [
"@napi-rs/canvas",
"better-sqlite3",
"ffmpeg-static"
],
"overrides": {
"lodash": "^4.17.23",
"@xmldom/xmldom": "^0.9.8",
"@types/localforage": "npm:empty-module@0.0.2"
}
} }
} }

14
pnpm-workspace.yaml Normal file
View file

@ -0,0 +1,14 @@
packages:
- .
strictDepBuilds: false
allowBuilds:
'@napi-rs/canvas': true
better-sqlite3: true
ffmpeg-static: true
overrides:
lodash: ^4.17.23
'@xmldom/xmldom': ^0.9.8
'@types/localforage': npm:empty-module@0.0.2