npmDependencies in the manifest, installed once for every plugin
replaces the per-plugin package.json from earlier tonight. the owner's call, and the reason is one i had not weighed: sharp is ~50 MB of platform binaries and the obvious dependency for anything touching images, so a second and third plugin wanting it would have meant a second and third copy with no version they could converge on. so every plugin's `npmDependencies` merge into ONE generated plugins/package.json, installed into plugins/node_modules/. bun resolves node_modules up the tree, so that directory serves every plugin and none of the platform's own code. ranges intersect rather than alternate. two plugins asking for ^0.33.5 and ^0.33.9 produce "^0.33.5 ^0.33.9", which npm and bun read as AND — the resolved version must satisfy both. `||` would have meant "either", which is the silent version of this failure: one plugin quietly getting a version the other cannot import. incompatible requirements now fail the install with bun's own message, and both askers are named in the steps either way. generated from the plugins ON DISK, like generatePluginSchemas, and never edited — so a package cannot appear there without a plugin having declared it. what this gives up, knowingly: a committed lockfile. ranges are the whole point and a range resolves per machine, so plugin packages are resolved at install time like osDependencies are, and unlike the platform's own. CLAUDE.md is emphatic about frozen lockfiles and 2026-08-04, so it is named in the manifest type rather than left to be discovered. the generated plugins/package.json and lockfile are gitignored — /plugins/*/ only ignores directories, so files at that level needed naming explicitly.
This commit is contained in:
@@ -105,6 +105,13 @@ src/databases/officer_db/migrations/
|
||||
# to the platform; the plugins do not.
|
||||
/plugins/*/
|
||||
|
||||
# Generated by src/servers/plugins/npm-deps.ts from every plugin's `npmDependencies`, and installed into
|
||||
# plugins/node_modules/. It describes whichever plugins are on THIS machine, so committing one would
|
||||
# claim a dependency set nobody chose. The rule above only ignores directories, so these need naming.
|
||||
/plugins/package.json
|
||||
/plugins/bun.lock
|
||||
/plugins/bun.lockb
|
||||
|
||||
# Visual baselines for the theme extraction — large, machine-specific, regenerate with scripts/theme-snapshot.ts
|
||||
.snapshots/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user