Skip to content
Merged
Show file tree
Hide file tree
Changes from 69 commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
e513662
pnpm-config-skuba
samchungy Dec 22, 2025
fa66c77
fix
samchungy Dec 22, 2025
5cdd282
huh
samchungy Dec 22, 2025
2529c12
Rename _.pnpm-workspace.yaml to _pnpm-workspace.yaml
samchungy Dec 22, 2025
8186984
fix
samchungy Dec 22, 2025
690e33a
Merge branch 'rfc-pnpm-config-skuba' of github.com:seek-oss/skuba int…
samchungy Dec 22, 2025
2a9ffd1
does this work?
samchungy Jan 5, 2026
588cb9c
fix
samchungy Jan 6, 2026
05d3e5a
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
samchungy Jan 6, 2026
5b6fe1f
Add migrate to pnpm file
samchungy Jan 6, 2026
58efd29
fix
samchungy Jan 6, 2026
015d5da
update
samchungy Jan 6, 2026
7b09296
i am an idiot
samchungy Jan 6, 2026
c10b6f5
Migrate Dockerfiles
samchungy Jan 6, 2026
5a57a6c
commit
samchungy Jan 6, 2026
463acc9
bump pnpm
samchungy Jan 6, 2026
16c30ca
bump lock
samchungy Jan 6, 2026
06e626c
update script
samchungy Jan 6, 2026
812056f
fix more things
samchungy Jan 6, 2026
8fcdad5
oops
samchungy Jan 6, 2026
1fcfa53
does this work
samchungy Jan 6, 2026
1354697
ignore
samchungy Jan 6, 2026
3bd76fb
changeset
samchungy Jan 6, 2026
f312481
fix logic
samchungy Jan 6, 2026
e2da9a5
update write command
samchungy Jan 6, 2026
20f6bf7
remove --workspace
samchungy Jan 6, 2026
1c4cd1e
cleanup
samchungy Jan 6, 2026
bb6299b
undo bump
samchungy Jan 6, 2026
6db0569
escape items in minimumReleaseAgeExclude
samchungy Jan 6, 2026
e5c355e
update
samchungy Jan 7, 2026
c4ac4bd
prefer offline
samchungy Jan 7, 2026
cb145a9
set back to offline
samchungy Jan 7, 2026
c791c77
tweak
samchungy Jan 7, 2026
8276c95
try this too
samchungy Jan 7, 2026
b4cf292
huh
samchungy Jan 7, 2026
e8fc141
does this work
samchungy Jan 7, 2026
1c9ffe4
test
samchungy Jan 7, 2026
30452ee
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
zbrydon Jan 29, 2026
a0026e9
Merge branch 'rfc-pnpm-config-skuba' of github.com:seek-oss/skuba int…
zbrydon Jan 29, 2026
104ef5a
Fix
zbrydon Jan 30, 2026
cee7add
Move patch to new version
zbrydon Jan 31, 2026
b3b36ca
This is required
zbrydon Jan 31, 2026
fe0591b
remove
samchungy Feb 5, 2026
891a4ab
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
samchungy Feb 5, 2026
7b7f6ed
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
zbrydon Feb 7, 2026
d4f7ae3
Merge branch 'rfc-pnpm-config-skuba' of github.com:seek-oss/skuba int…
zbrydon Feb 7, 2026
f145030
Remove unused import
zbrydon Feb 7, 2026
84bb4c4
Add `strictDepBuilds` and `trustPolicy` (#2200)
zbrydon Feb 7, 2026
e5719f9
Use `allowBuilds`
zbrydon Feb 16, 2026
9254c3e
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
zbrydon Feb 16, 2026
e203d62
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
zbrydon Mar 2, 2026
727f0a3
Fix broken lockfile
zbrydon Mar 2, 2026
77f182f
Merge branch 'main' of github.com:seek-oss/skuba into rfc-pnpm-config…
samchungy Mar 3, 2026
1b5743f
bump things
samchungy Mar 3, 2026
6fda91c
Merge branch 'main' into rfc-pnpm-config-skuba
samchungy Mar 3, 2026
2897937
update snap
samchungy Mar 3, 2026
0ef4392
update headers
samchungy Mar 3, 2026
87e1de6
test
samchungy Mar 3, 2026
46066c0
Move patches to current version
zbrydon Mar 3, 2026
81eeee2
Add back `--frozen-lockfile` and change to `--offline` for plugin
zbrydon Mar 3, 2026
0055c6c
Remove `--frozen-lockfile`
zbrydon Mar 3, 2026
9bf046f
Go back to `--prefer-offline`
zbrydon Mar 3, 2026
eae8063
Merge branch 'main' into rfc-pnpm-config-skuba
samchungy Mar 3, 2026
2c9464a
fix
samchungy Mar 4, 2026
edca9fd
Merge branch 'rfc-pnpm-config-skuba' of github.com:seek-oss/skuba int…
samchungy Mar 4, 2026
ac59d6a
add changeset
samchungy Mar 4, 2026
950a7c0
changesets
samchungy Mar 4, 2026
1647947
add manifest
samchungy Mar 4, 2026
81f68d7
Add readme
samchungy Mar 4, 2026
a488b5d
Apply suggestions
samchungy Mar 4, 2026
bf8ac3b
Add blockExoticSubdeps to pnpm config and sort
samchungy Mar 4, 2026
536a473
more changesets
samchungy Mar 4, 2026
80591e3
update pnpmfileChecksum
samchungy Mar 4, 2026
d2bf235
Restore comment
samchungy Mar 4, 2026
fb84fff
Try using force
samchungy Mar 4, 2026
310d234
Merge branch 'rfc-pnpm-config-skuba' of github.com:seek-oss/skuba int…
samchungy Mar 4, 2026
9af2da3
sort
samchungy Mar 4, 2026
26b9a7a
fix
samchungy Mar 4, 2026
d3c96ff
add another note
samchungy Mar 4, 2026
e5e9a26
sort again
samchungy Mar 4, 2026
a7737e9
add recommendation
samchungy Mar 4, 2026
a05c805
Merge branch 'main' into rfc-pnpm-config-skuba
samchungy Mar 4, 2026
28ad2d5
Merge branch 'main' into rfc-pnpm-config-skuba
samchungy Mar 4, 2026
5b94f8c
add more changeset
samchungy Mar 4, 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
20 changes: 20 additions & 0 deletions .changeset/dry-lines-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
'skuba': major
---

lint: Enable [`allowBuilds`](https://pnpm.io/settings#allowbuilds), [`trustPolicy`](https://pnpm.io/settings#trustpolicy) and [`ignorePatchFailures`](https://pnpm.io/cli/patch#ignorepatchfailures) in `pnpm-plugin-skuba`

In light of recent security vulnerabilities plaguing the JavaScript ecosystem, we are enabling some additional pnpm features to help mitigate the risk of supply chain attacks.

We have allowlisted a set of known packages as our default but you may need to update your `pnpm-workspace.yaml` configuration to add any additional packages you use that are not included in the default allowlist.

Example:

```yaml
allowBuilds:
some-package: true
some-other-package@1.0.0: true

trustPolicyExclude:
- some-package@1.2.3
```
19 changes: 19 additions & 0 deletions .changeset/lovely-snails-live.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
'skuba': major
---

lint: Migrate `pnpm-workspace.yaml` skuba configuration to `pnpm-plugin-skuba`

This change replaces the managed skuba section in `pnpm-workspace.yaml` with a pnpm configuration plugin.

The migration includes removing the `minimumReleaseAgeExcludeOverload` settings from `package.json` and migrating them to `pnpm-workspace.yaml`

This simplifies the managed configuration `skuba` provides, allowing you to override and extend previously un-configurable settings such as `minimumReleaseAge` from your `pnpm-workspace.yaml` file.

Example:

```yaml
minimumReleaseAge: 1440 # 1 day
minimumReleaseAgeExclude:
- some-package
```
6 changes: 3 additions & 3 deletions .changeset/smart-lamps-deny.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This patch will attempt to do a best effort migration of your `skuba build-packa
4. Updating your package `package.json` files to point to the new build outputs
5. Removing redundant `tsconfig.build.json` files

## File changes
#### File changes

The output between what `skuba build-package` generates before and after this change will be different, so you may need to update any references to the output files in your project.

Expand All @@ -36,7 +36,7 @@ If needed, export those references from your package entry point to help consume

Note: if you choose to remove the `unbundle: true` option from `tsdown.config.mts`, tsdown may emit bundled/chunked outputs and internal `lib/...` file paths can change between builds. Consumers should avoid importing from build output files directly, and instead import from the package entry point (or explicitly exported sub paths)

## Format changes
#### Format changes

`tsdown` selects what ECMAScript target version to build for based on the `engines.node` field in your `package.json`.

Expand All @@ -59,7 +59,7 @@ This release changes published build output paths. If you were previously import
```
````

## Debugging
#### Debugging

If your project utilises a `main` field which points to a `.ts` file within a monorepo setup, eg.

Expand Down
5 changes: 5 additions & 0 deletions .changeset/twelve-chairs-cheer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'pnpm-plugin-skuba': major
---

Release stable version
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I accidentally published a snapshot version at 1.0.0 oops lol

2 changes: 1 addition & 1 deletion .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
customManagers: [
{
customType: 'regex',
managerFilePatterns: ['/pnpm.md$/'],
fileMatch: ['pnpm.md$', '(^|/)_package\\.json$'],
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This caused me alot of pain as the _package.json pnpm versions weren't up to date

matchStrings: [
'"packageManager": "(?<depName>.*?)@(?<currentValue>.*?)",',
],
Expand Down
1 change: 1 addition & 0 deletions .pnpmfile.cjs
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
"jsonfile": "6.2.0",
"koa": "3.1.2",
"memfs": "4.56.10",
"pnpm-plugin-skuba": "workspace:*",
"remark-cli": "12.0.1",
"remark-preset-lint-recommended": "7.0.1",
"semver": "7.7.4",
Expand Down
8 changes: 8 additions & 0 deletions packages/pnpm-plugin-skuba/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# pnpm-plugin-skuba

[![npm package](https://img.shields.io/npm/v/pnpm-plugin-skuba?labelColor=cb0000&color=5b5b5b)](https://www.npmjs.com/package/pnpm-plugin-skuba)
[![Node.js version](https://img.shields.io/node/v/pnpm-plugin-skuba?labelColor=5fa04e&color=5b5b5b)](https://www.npmjs.com/package/pnpm-plugin-skuba)

Shareable pnpm config for **[skuba]**.

[skuba]: https://github.com/seek-oss/skuba
33 changes: 33 additions & 0 deletions packages/pnpm-plugin-skuba/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "pnpm-plugin-skuba",
"version": "1.0.0",
"private": false,
"description": "Pnpm plugin for skuba",
"homepage": "https://github.com/seek-oss/skuba/tree/main/packages/pnpm-plugin-skuba#readme",
"bugs": {
"url": "https://github.com/seek-oss/skuba/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/seek-oss/skuba.git",
"directory": "packages/pnpm-plugin-skuba"
},
"license": "MIT",
"sideEffects": false,
"main": "pnpmfile.cjs",
"files": [
"pnpmfile.cjs"
],
"devDependencies": {
"@pnpm/config": "^1004.9.0"
},
"engines": {
"node": ">=22.14.0"
},
"skuba": {
"entryPoint": "pnpmfile.cjs",
"template": "oss-npm-package",
"type": "package",
"version": "14.1.2"
}
}
71 changes: 71 additions & 0 deletions packages/pnpm-plugin-skuba/pnpmfile.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// @ts-check
const MINIMUM_RELEASE_AGE_EXCLUDE = [
'@seek/*',
'@skuba-lib/*',
'eslint-config-seek',
'eslint-config-skuba',
'eslint-plugin-skuba',
'skuba',
'skuba-dive',
'tsconfig-seek',
];

const ALLOWED_BUILDS = {
'@ast-grep/lang-json': true,
'@datadog/native-appsec': true,
'@datadog/native-iast-taint-tracking': true,
'@datadog/native-metrics': true,
'@datadog/pprof': true,
'dd-trace': true,
esbuild: true,
protobufjs: true,
'unix-dgram': true,
'unrs-resolver': true,
};

const PUBLIC_HOIST_PATTERN = [
'@arethetypeswrong/core',
'@eslint/*',
'@types*',
'eslint',
'eslint-config-skuba',
'esbuild',
'jest',
'prettier',
'publint',
'tsconfig-seek',
'tsdown',
'typescript',
];

const TRUST_POLICY_EXCLUDE = ['semver@5.7.2 || 6.3.1'];

module.exports = {
hooks: {
/** @param {import("@pnpm/config").Config} config */
updateConfig(config) {
if (typeof config.publicHoistPattern === 'string') {
config.publicHoistPattern = [config.publicHoistPattern];
}
config.minimumReleaseAgeExclude ??= [];
config.minimumReleaseAgeExclude.push(...MINIMUM_RELEASE_AGE_EXCLUDE);

config.allowBuilds ??= {};
Object.assign(config.allowBuilds, ALLOWED_BUILDS);

config.publicHoistPattern ??= [];
config.publicHoistPattern.push(...PUBLIC_HOIST_PATTERN);

config.trustPolicyExclude ??= [];
config.trustPolicyExclude.push(...TRUST_POLICY_EXCLUDE);

config.ignorePatchFailures ??= false;
config.minimumReleaseAge ??= 4320;
config.packageManagerStrictVersion ??= true;
config.strictDepBuilds ??= true;
config.trustPolicy ??= 'no-downgrade';

return config;
},
},
};
Loading