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
chore: replace lerna with multi-semantic-release and yarn workspaces (#1155)
* build: replace lerna with multi-semantic-release and yarn workspaces
- Remove lerna; use `yarn workspaces foreach` for build/test orchestration
- Add @qiwi/multi-semantic-release for selective per-package publishing:
only packages whose files changed are released on each merge
- Add semantic-release + @ffflorian/semantic-release-config; root .releaserc.json extends it
- Update CI: add fetch-depth: 0, GITHUB_TOKEN, remove manual chore skip
(semantic-release handles release skipping via conventional commits)
- Remove NPM_TOKEN, OIDC is used for npm auth
- Add AGENTS.md rule: always use pinned versions in package.json
* fix: add --all flag to yarn workspaces foreach commands
Yarn 4 requires --all (-A) when running foreach without a worktree
or recursive scope. Also update AGENTS.md to require running
build and tests after every change.
* fix: exclude root workspace from workspaces foreach to prevent infinite recursion
Root has 'test' and 'clean' scripts that call foreach again, causing
an infinite loop when --all (-A) includes the root workspace.
* build: switch to dhoulb/multi-semantic-release, use * for intra-repo dep versions
Replace @qiwi/multi-semantic-release with multi-semantic-release (dhoulb).
Change my-timezone's ntpclient dependency to * — multi-semantic-release
replaces it with the correct version at publish time.
Add --ignore-private-packages flag to release script.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: AGENTS.md
+27-12Lines changed: 27 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,11 @@ This file contains knowledge and conventions for AI agents working in this repos
4
4
5
5
## Project Overview
6
6
7
-
This is a Yarn workspaces monorepo managed by [Lerna](https://lerna.js.org/), containing multiple independently published Node.js/TypeScript packages by [Florian Imdahl](https://github.com/ffflorian).
7
+
This is a yarn workspaces monorepo managed by [multi-semantic-release](https://github.com/qiwi/multi-semantic-release), containing multiple independently published Node.js/TypeScript packages by [Florian Imdahl](https://github.com/ffflorian).
Each package supports `build`, `clean`, and `test` scripts run via Lerna.
63
+
Each package supports `build`, `clean`, and `test` scripts run via `yarn workspaces foreach`.
64
64
65
65
## Tooling
66
66
67
67
-**Build**: TypeScript (`tsc`) via per-package `tsconfig.build.json`
68
-
-**Bundler**: Vite (used in some packages)
69
-
-**Testing**: Vitest
68
+
-**Bundler**: vite (used in some packages)
69
+
-**Testing**: vitest
70
70
-**Linting**: oxlint + ESLint with `@ffflorian/eslint-config`, run in that order
71
-
-**Formatting**: Prettier with `@ffflorian/prettier-config`
72
-
-**Git hooks**: Lefthook (`lefthook.yml`) — runs prettier, oxlint, and eslint with auto-fix on staged files before commit
73
-
-**Versioning**: Lerna independent versioning with conventional commits
74
-
-**Publishing**: Lerna publishes to npm registry; only allowed from `main` branch
71
+
-**Formatting**: prettier with `@ffflorian/prettier-config`
72
+
-**Git hooks**: lefthook (`lefthook.yml`) — runs prettier, oxlint, and eslint with auto-fix on staged files before commit
73
+
-**Versioning**: Independent versioning via conventional commits
74
+
-**Publishing**: `multi-semantic-release` (dhoulb) publishes to npm; only packages whose files changed are released. Private packages are excluded via `--ignore-private-packages`. Only allowed from `main` branch.
75
+
-**Cross-repo deps**: When a package in this repo depends on another package in this repo, use `*` as the version — multi-semantic-release replaces it with the correct version at publish time.
**Always use pinned (exact) versions in `package.json`.** Do not use `^`, `~`, or other range specifiers for dependencies. This is enforced by `defaultSemverRangePrefix: ''` in `.yarnrc.yml`.
75
81
76
82
## Commit Messages
77
83
@@ -89,7 +95,8 @@ ci: CI/CD configuration changes
89
95
```
90
96
91
97
- Do **not** include references to Claude or AI tools in commit messages or PR descriptions.
92
-
- Lerna uses conventional commits to determine version bumps and generate changelogs.
98
+
-`multi-semantic-release` uses conventional commits to determine version bumps and generate changelogs.
99
+
- Only packages with commits touching their own directory are released — unrelated packages are never published.
0 commit comments