You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/adr/0011-independent-versioning-strategy.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,11 +53,11 @@ Because this is a monorepo, plugins reference the local `arkenv` package during
53
53
- When published to npm, pnpm rewrites `workspace:*` to the **exact current version** (e.g., `"1.0.0-alpha.1"`).
54
54
- This is correct for `devDependencies` because they are not installed by end users.
55
55
56
-
**`peerDependencies`: `"arkenv": "workspace:^"`**
56
+
**`peerDependencies`: `"arkenv": "^1.0.0"`**
57
57
58
-
-During local development, this also links to the workspace package.
59
-
-When published to npm, pnpm rewrites `workspace:^` to a **caret range** (e.g., `"^1.0.0-alpha.1"`).
60
-
-This is **mandatory** for `peerDependencies`. Using `workspace:*` here would publish an exact pin, meaning every patch release of `arkenv` would trigger an unmet peer dependency warning for all users until they manually update every plugin. The caret range allows users to upgrade `arkenv` within the major version without friction.
58
+
-We use the **Wide Peer** strategy by hardcoding the absolute minimum supported version of `arkenv`. We completely drop the `workspace:` prefix here.
59
+
-This decoupling is necessary to solve the "Artificial Floor" problem where using `workspace:^`forces the published package to artificially require the exact version of the core engine present in the monorepo at publish time.
60
+
-Because it is a regular hardcoded range, anyone from `1.0.0` upwards can install the new plugin update without being forced to upgrade their core engine.
@@ -66,11 +66,11 @@ Because this is a monorepo, plugins reference the local `arkenv` package during
66
66
- This ensures that a minor feature update to `arkenv` cannot silently break the coupled internal tool. If `arkenv` bumps its minor version, the dependent package must also be released and bumped.
67
67
-**Not currently used** in the ArkEnv monorepo, but reserved for future highly-coupled internal tools.
|`devDependencies`|`workspace:*`| Links to workspace | Exact version (`1.0.0-alpha.1`) |
72
+
|`peerDependencies`|`^1.0.0`| Standard resolution | Hardcoded range (`^1.0.0`) |
73
+
|`dependencies` (tight) |`workspace:~`| Links to workspace | Tilde range (`~1.0.0-alpha.1`) |
74
74
75
75
> **Reference:** See [pnpm documentation on publishing workspace packages](https://pnpm.io/workspaces#publishing-workspace-packages) for full details on how `workspace:` protocols are rewritten during publish.
0 commit comments