diff --git a/package.json b/package.json index fbef460..eb4e4c2 100644 --- a/package.json +++ b/package.json @@ -213,15 +213,5 @@ "owner": "wimi321", "repo": "GoAgent" } - }, - "pnpm": { - "onlyBuiltDependencies": [ - "electron", - "electron-winstaller", - "esbuild", - "onnxruntime-node", - "protobufjs", - "sharp" - ] } } diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 554d31e..ae16500 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,10 @@ packages: - "." - "website" +allowBuilds: + electron: true + electron-winstaller: true + esbuild: true + onnxruntime-node: true + protobufjs: true + sharp: true diff --git a/tests/pnpm-config-contract.test.mjs b/tests/pnpm-config-contract.test.mjs new file mode 100644 index 0000000..59c5ffe --- /dev/null +++ b/tests/pnpm-config-contract.test.mjs @@ -0,0 +1,20 @@ +import assert from 'node:assert/strict' +import { readFileSync } from 'node:fs' +import { join } from 'node:path' +import test from 'node:test' + +const root = process.cwd() + +test('pnpm build-script approvals are compatible with pnpm 11', () => { + const packageJson = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) + const workspace = readFileSync(join(root, 'pnpm-workspace.yaml'), 'utf8') + + assert.equal(packageJson.pnpm?.onlyBuiltDependencies, undefined) + assert.match(workspace, /^allowBuilds:\r?$/m) + + for (const dependency of ['electron', 'electron-winstaller', 'esbuild', 'onnxruntime-node', 'protobufjs', 'sharp']) { + assert.match(workspace, new RegExp(`^ ${dependency}: true\\r?$`, 'm'), `missing allowBuilds approval for ${dependency}`) + } + + assert.doesNotMatch(workspace, /set this to true or false/) +})