Skip to content

chore: upgrade pnpm to 11.9.0 - #1781

Open
panish16 wants to merge 4 commits into
bcgov:mainfrom
panish16:feat/upgrade-pnpm-v11
Open

chore: upgrade pnpm to 11.9.0#1781
panish16 wants to merge 4 commits into
bcgov:mainfrom
panish16:feat/upgrade-pnpm-v11

Conversation

@panish16

Copy link
Copy Markdown
Contributor

Fresh PR replacing #1747 (closed while testing was still in progress).

Scoped strictly to pnpm 11.9.0: version pins (pnpm_version, packageManager, pnpm/action-setup@v6), --ignore-scripts where needed, and pinning the smoke-test workflows off the floating latest-11 tag.

Note: strr-examiner-web, strr-host-pm-web, strr-platform-web, and strr-strata-web will still fail verify-build — this is the pre-existing, already-known upstream Nuxt/c12 #imports resolution bug for git-hosted layers (unrelated to pnpm, confirmed via A/B test against the pre-pnpm-11 code). Deliberately left unfixed here per @panish16's request to keep this PR pnpm-only.

@panish16
panish16 requested a review from jimmypalelil as a code owner July 31, 2026 08:33
Pin pnpm_version to 11.9.0 in CI workflows, set packageManager field
via corepack, and add pnpm-workspace.yaml with allowBuilds for native
deps (@parcel/watcher, esbuild, sharp, unrs-resolver) required under
pnpm 11's stricter build-script gating.
@panish16
panish16 force-pushed the feat/upgrade-pnpm-v11 branch from 3e3324b to 1a3853c Compare August 3, 2026 18:53
pnpm 11's stricter hoisting no longer resolves tailwindcss transitively
for eslint-plugin-tailwindcss in examiner/host-pm/platform/strata,
crashing eslint entirely (Could not find tailwindcss). It was already
present in each lockfile as a transitive dep; declaring it directly
fixes resolution without changing the resolved version (3.4.19).
The git-hosted layer reference (github:bcgov/STRR/strr-base-web) is
cloned by giget into an isolated node_modules/.c12/<hash> tree with no
node_modules of its own, so its tsconfig.json (and anything depending
on generated .nuxt/tsconfig.json) can't resolve under pnpm 11's
resolution behavior. This broke nuxt prepare for all 4 downstream
apps, which in turn broke both eslint's typescript/import resolvers
(200+ spurious lint errors) and the Nuxt build itself.

Switching to a local relative-path extends avoids the git-clone
isolation entirely. Since the sibling app's own .nuxt/tsconfig.json
may not exist in a fresh checkout (CI only runs each app's own nuxt
prepare), each consuming app eagerly installs and prepares
strr-base-web if missing, before Nuxt evaluates its config.
const __dirname = dirname(fileURLToPath(import.meta.url))
const baseWebDir = resolve(__dirname, '../strr-base-web')
if (!existsSync(resolve(baseWebDir, 'node_modules'))) {
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
}
if (!existsSync(resolve(baseWebDir, '.nuxt/tsconfig.json'))) {
execSync('npx --yes nuxi prepare', { cwd: baseWebDir, stdio: 'inherit' })
const __dirname = dirname(fileURLToPath(import.meta.url))
const baseWebDir = resolve(__dirname, '../strr-base-web')
if (!existsSync(resolve(baseWebDir, 'node_modules'))) {
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
}
if (!existsSync(resolve(baseWebDir, '.nuxt/tsconfig.json'))) {
execSync('npx --yes nuxi prepare', { cwd: baseWebDir, stdio: 'inherit' })
const __dirname = dirname(fileURLToPath(import.meta.url))
const baseWebDir = resolve(__dirname, '../strr-base-web')
if (!existsSync(resolve(baseWebDir, 'node_modules'))) {
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
}
if (!existsSync(resolve(baseWebDir, '.nuxt/tsconfig.json'))) {
execSync('npx --yes nuxi prepare', { cwd: baseWebDir, stdio: 'inherit' })
const __dirname = dirname(fileURLToPath(import.meta.url))
const baseWebDir = resolve(__dirname, '../strr-base-web')
if (!existsSync(resolve(baseWebDir, 'node_modules'))) {
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
execSync('npx --yes pnpm install --ignore-scripts', { cwd: baseWebDir, stdio: 'inherit' })
}
if (!existsSync(resolve(baseWebDir, '.nuxt/tsconfig.json'))) {
execSync('npx --yes nuxi prepare', { cwd: baseWebDir, stdio: 'inherit' })
All 4 STRR frontend CD files (examiner/host-pm/platform/strata) were
still hardcoded to pnpm_version: 10.0.0, unrelated to and never touched
by the pnpm-v11 CI migration on this branch.
@sonarqubecloud

sonarqubecloud Bot commented Aug 3, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
9.4% Duplication on New Code (required ≤ 3%)
B Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants