Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
5db8ab8
Upgrade pnpm
zbrydon May 11, 2026
d358f0a
ermmm
zbrydon May 11, 2026
bfdb0b8
We have to use the same version that `pnpm/action-setup` uses? 🤔
zbrydon May 11, 2026
34d5dde
And the rest
zbrydon May 11, 2026
150afb9
I suspect things are not working as they should
zbrydon May 11, 2026
3d82923
install
zbrydon May 11, 2026
ef4393f
ts-ignore
zbrydon May 13, 2026
9fd34be
Fix
zbrydon May 13, 2026
026e936
Fix more
zbrydon May 13, 2026
deb713b
Merge branch 'main' of github.com:seek-oss/skuba into upgrade-pnpm
zbrydon May 13, 2026
a88eac6
Use pnpm v11.1
zbrydon May 13, 2026
88d3eac
More updates
zbrydon May 13, 2026
085af02
Fix
zbrydon May 14, 2026
9181263
Format
zbrydon May 14, 2026
5ae3e45
Merge branch 'main' into upgrade-pnpm
zbrydon May 14, 2026
e7f6736
Use new release
zbrydon May 15, 2026
e9f9db0
Merge branch 'main' of github.com:seek-oss/skuba into upgrade-pnpm
zbrydon May 15, 2026
2b6fd40
Try this
zbrydon May 15, 2026
f6d99cc
Test enabling `strictDepBuilds` & `trustPolicy`
zbrydon May 15, 2026
4fbf71d
snapshot & update version
zbrydon May 15, 2026
689ed6e
repatch `pnpm-workspace.yaml`
zbrydon May 15, 2026
5da1280
mhmm
zbrydon May 15, 2026
0516fc9
Still broken in v11
zbrydon May 15, 2026
483d2c7
Merge branch 'main' of github.com:seek-oss/skuba into upgrade-pnpm
zbrydon Jun 16, 2026
330d49f
Move patch
zbrydon Jun 16, 2026
b3304ac
Use mjs
zbrydon Jun 16, 2026
ae14e69
Use new types that still aren't updated...
zbrydon Jun 16, 2026
8e5fdbb
Merge branch 'main' of github.com:seek-oss/skuba into upgrade-pnpm
zbrydon Jun 21, 2026
59446a7
Update pnpm-lock.yaml
zbrydon Jun 21, 2026
7098f0f
Fix bad merge
zbrydon Jun 21, 2026
4b551f9
use correct types, `.mjs` and re-enable settings
zbrydon Jun 21, 2026
91fb694
Update pnpm version
zbrydon Jun 21, 2026
b4aea2d
Words
zbrydon Jun 21, 2026
53b7187
Add changesets patch while we wait for v3
zbrydon Jun 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/stale-geese-do.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'skuba': minor
---

lint: Run pnpm codemod to upgrade to pnpm v11
9 changes: 9 additions & 0 deletions .changeset/wet-glasses-cover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'pnpm-plugin-skuba': minor
---

Support pnpm 11

- Migrated the pnpmfile from CommonJS (`pnpmfile.cjs`) to ESM (`pnpmfile.mjs`).
- Re-enabled `strictDepBuilds` and set `trustPolicy` to `no-downgrade`.
- Replaced `packageManagerStrictVersion` with `pmOnFail: error`, removing the now-unnecessary `ignorePatchFailures` setting.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
"supertest": "7.2.2",
"type-fest": "2.19.0"
},
"packageManager": "pnpm@10.34.3",
"packageManager": "pnpm@11.8.0",
"engines": {
"node": ">=22.18.0"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-config-skuba/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"eslint": ">=9.22.0",
"typescript": ">=5.5.4"
},
"packageManager": "pnpm@10.34.3",
"packageManager": "pnpm@11.8.0",
"engines": {
"node": ">=22.14.0"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-plugin-skuba/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"eslint": ">=9.22.0",
"typescript-eslint": ">=8.59.2"
},
"packageManager": "pnpm@10.34.3",
"packageManager": "pnpm@11.8.0",
"engines": {
"node": ">=22.14.0"
},
Expand Down
8 changes: 4 additions & 4 deletions packages/pnpm-plugin-skuba/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
"license": "MIT",
"sideEffects": false,
"type": "module",
"main": "pnpmfile.cjs",
"main": "pnpmfile.mjs",
"files": [
"pnpmfile.cjs"
"pnpmfile.mjs"
],
"devDependencies": {
"@pnpm/cafs-types": "^1000.1.0",
"@pnpm/config": "^1004.10.3"
"@pnpm/config.reader": "^1101.9.0"
},
"engines": {
"node": ">=22.14.0"
},
"skuba": {
"entryPoint": "pnpmfile.cjs",
"entryPoint": "pnpmfile.mjs",
"template": "oss-npm-package",
"type": "package",
"version": "14.1.2"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// @ts-check

/**
* @satisfies {Partial<import("@pnpm/config").Config>}
* @satisfies {Partial<import("@pnpm/config.reader").Config>}
*/
const defaultConfig = {
export const defaultConfig = {
allowBuilds: {
'@ast-grep/lang-bash': true,
'@ast-grep/lang-json': true,
Expand All @@ -19,7 +19,6 @@ const defaultConfig = {
'unrs-resolver': true,
},
blockExoticSubdeps: true,
ignorePatchFailures: false,

minimumReleaseAge: 4320,
minimumReleaseAgeExclude: [
Expand All @@ -34,7 +33,8 @@ const defaultConfig = {
'tsconfig-seek',
],

packageManagerStrictVersion: true,
pmOnFail: 'error',

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was also running into this maybe? 🙃


publicHoistPattern: [
'@arethetypeswrong/core',
'@changesets/cli',
Expand All @@ -53,15 +53,15 @@ const defaultConfig = {
'typescript',
'vitest',
],
strictDepBuilds: false,
trustPolicy: 'off',
strictDepBuilds: true,
trustPolicy: 'no-downgrade',
trustPolicyExclude: ['semver@6.3.1'], // dependency of eslint-plugin-react
};

module.exports = {
export default {
defaultConfig,
hooks: {
/** @param {import("@pnpm/config").Config} config */
/** @param {import("@pnpm/config.reader").Config} config */
updateConfig(config) {
Object.entries(defaultConfig).forEach(([key, value]) => {
if (
Expand Down
38 changes: 38 additions & 0 deletions patches/@changesets__cli@2.31.0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
diff --git a/dist/changesets-cli.cjs.js b/dist/changesets-cli.cjs.js
index 9f0bd6c5f96011be225269a71365a878cb822bb7..6e7267d88b66868f144b531763a000bfa197483e 100644
--- a/dist/changesets-cli.cjs.js
+++ b/dist/changesets-cli.cjs.js
@@ -824,12 +824,12 @@ function getPackageInfo(packageJson) {

// Bare query: when dist-tags.latest is set, returns the full `versions` array via packument
// bleed-through, enabling only-pre detection downstream. Returns empty when no `latest` exists.
- let result = await spawn__default["default"]("npm", ["info", packageJson.name, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
+ let result = await spawn__default["default"]("pnpm", ["info", packageJson.name, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);

// Bare query returned nothing — retry with exact version specifier
// to handle prerelease-only packages on registries without auto-`latest`.
if (result.stdout.toString() === "") {
- result = await spawn__default["default"]("npm", ["info", `${packageJson.name}@${packageJson.version}`, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
+ result = await spawn__default["default"]("pnpm", ["info", `${packageJson.name}@${packageJson.version}`, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
}

// Normalize, just in case. The above prerelease-only package query should already have returned:
diff --git a/dist/changesets-cli.esm.js b/dist/changesets-cli.esm.js
index d9582bf53eaf55402a6bf96a39589af7854b8f23..e4224856a038284171250e519c64a7ad307b65cf 100644
--- a/dist/changesets-cli.esm.js
+++ b/dist/changesets-cli.esm.js
@@ -787,12 +787,12 @@ function getPackageInfo(packageJson) {

// Bare query: when dist-tags.latest is set, returns the full `versions` array via packument
// bleed-through, enabling only-pre detection downstream. Returns empty when no `latest` exists.
- let result = await spawn$1("npm", ["info", packageJson.name, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
+ let result = await spawn$1("pnpm", ["info", packageJson.name, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);

// Bare query returned nothing — retry with exact version specifier
// to handle prerelease-only packages on registries without auto-`latest`.
if (result.stdout.toString() === "") {
- result = await spawn$1("npm", ["info", `${packageJson.name}@${packageJson.version}`, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
+ result = await spawn$1("pnpm", ["info", `${packageJson.name}@${packageJson.version}`, `--${scope ? `${scope}:` : ""}registry=${registry}`, "--json"]);
}

// Normalize, just in case. The above prerelease-only package query should already have returned:
Loading