@williamthorsen/release-kit 5.3.1 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 5.4.0 — 2026-06-27
6
+
7
+ ### 🎉 Features
8
+
9
+ - Centralize the per-package build as an nmr-compile bin (#419)
10
+
11
+ Introduces `nmr-compile`, a single command shipped with `@williamthorsen/nmr` that compiles each workspace package and now backs the default build. Consuming repos can delete their own per-package build script and pick up future build fixes just by upgrading nmr. Repeated builds with unchanged source now reliably skip recompiling instead of occasionally rebuilding for no reason, and import aliases now resolve correctly in symlinked checkouts.
12
+
13
+ ## 5.3.2 — 2026-06-16
14
+
15
+ ### ♻️ Refactoring
16
+
17
+ - Migrate from js-yaml to yaml (#410)
18
+
19
+ Replaces the `js-yaml` dependency with the `yaml` package for all YAML reading and writing, with no change to behavior or generated output. The swap trims the dependency footprint by dropping a direct dependency and its companion type-definitions package, since `yaml` ships its own types.
20
+
5
21
  ## 5.3.1 — 2026-05-19
6
22
 
7
23
  ### 🐛 Bug fixes
@@ -449,6 +465,7 @@ All notable changes to this project will be documented in this file.
449
465
  - Cover multi-changelogPaths and error paths (#44)
450
466
 
451
467
  Add three tests for previously untested code paths:
468
+
452
469
  - `releasePrepareMono`: component with two `changelogPaths` entries, asserting `git-cliff` is invoked once per path with the correct `--output` target.
453
470
  - `getCommitsSinceTarget`: `git describe` failure with a non-128 exit status propagates as a wrapped error instead of being swallowed.
454
471
  - `getCommitsSinceTarget`: `git log` failure is wrapped and re-thrown with the commit range in the message.
@@ -465,6 +482,10 @@ All notable changes to this project will be documented in this file.
465
482
 
466
483
  ### 🎉 Features
467
484
 
485
+ - Migrate release-kit from toolbelt (#18)
486
+
487
+ Migrates the complete `@williamthorsen/release-kit` package (v1.0.1) from `williamthorsen/toolbelt` into `packages/release-kit/`, adds shebang preservation to the shared esbuild plugin for CLI binaries, and sets up dogfooding infrastructure so this monorepo uses release-kit for its own releases.
488
+
468
489
  - 🚨 **Breaking:** Slim down release workflow by removing unnecessary pnpm install (#21)
469
490
 
470
491
  Make release-kit self-contained by invoking git-cliff via `npx --yes` instead of requiring it on PATH, and by appending modified file paths to the format command so lightweight formatters like `npx prettier --write` work without a full `pnpm install`. Update init templates, README, and consuming repo config/workflow to reference workflow v3.
package/README.md CHANGED
@@ -5,13 +5,13 @@ Version-bumping and changelog-generation toolkit for release workflows.
5
5
  Provides a self-contained CLI that auto-discovers workspaces from `pnpm-workspace.yaml`, parses conventional commits, determines version bumps, updates `package.json` files, and generates changelogs from `git-cliff --context` output rendered in-process (with optional [editorial overrides](#editorial-overrides)).
6
6
 
7
7
  <!-- section:release-notes -->
8
- ## Release notes — v5.3.1 (2026-05-19)
8
+ ## Release notes — v5.4.0 (2026-06-27)
9
9
 
10
- ### 🐛 Bug fixes
10
+ ### 🎉 Features
11
11
 
12
- - Validate overrides against the full release history (#401)
12
+ - Centralize the per-package build as an nmr-compile bin (#419)
13
13
 
14
- Fixes an issue where `release-kit overrides validate` reported overrides as stale when they targeted commits in past releases, even though `release-kit prepare` correctly matched them. The two commands now agree on which overrides are stale.
14
+ Introduces `nmr-compile`, a single command shipped with `@williamthorsen/nmr` that compiles each workspace package and now backs the default build. Consuming repos can delete their own per-package build script and pick up future build fixes just by upgrading nmr. Repeated builds with unchanged source now reliably skip recompiling instead of occasionally rebuilding for no reason, and import aliases now resolve correctly in symlinked checkouts.
15
15
  <!-- /section:release-notes -->
16
16
 
17
17
  ## Installation
package/dist/esm/.cache CHANGED
@@ -1 +1 @@
1
- 376cb01707ee2fb8afe186dfa7baa15e2a0c982201fae4c30632cf598d87d09c
1
+ af0e28227a52571d73032d292c3e975d8897228025e3fbfcdfb4da21cfa59db0
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { glob } from "glob";
4
- import { load } from "js-yaml";
4
+ import { parse } from "yaml";
5
5
  import { isRecord } from "./typeGuards.js";
6
6
  async function discoverWorkspaces() {
7
7
  const workspaceFile = "pnpm-workspace.yaml";
@@ -15,7 +15,7 @@ async function discoverWorkspaces() {
15
15
  console.warn(`Warning: Failed to read ${workspaceFile}: ${error instanceof Error ? error.message : String(error)}`);
16
16
  return void 0;
17
17
  }
18
- const parsed = load(content);
18
+ const parsed = parse(content);
19
19
  if (!isRecord(parsed)) {
20
20
  return void 0;
21
21
  }
@@ -1,6 +1,6 @@
1
1
  import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
- import { dump } from "js-yaml";
3
+ import { stringify } from "yaml";
4
4
  import { loadSyncLabelsConfig, SYNC_LABELS_CONFIG_PATH } from "./loadSyncLabelsConfig.js";
5
5
  import { hashPresetFile } from "./presets.js";
6
6
  import { resolveLabels } from "./resolveLabels.js";
@@ -10,7 +10,7 @@ function formatLabelsYaml(labels, presetHashes) {
10
10
  for (const [name, hash] of [...presetHashes.entries()].sort(([a], [b]) => a.localeCompare(b))) {
11
11
  headerLines.push(`# ${name} preset hash: ${hash}`);
12
12
  }
13
- const yamlBody = dump(labels, { quotingType: "'", forceQuotes: false, lineWidth: -1 });
13
+ const yamlBody = stringify(labels, { singleQuote: true, lineWidth: 0 });
14
14
  return headerLines.join("\n") + "\n" + yamlBody;
15
15
  }
16
16
  async function generateCommand() {
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { resolve } from "node:path";
4
4
  import { findPackageRoot } from "@williamthorsen/nmr-core";
5
- import { load } from "js-yaml";
5
+ import { parse } from "yaml";
6
6
  import { isRecord } from "../typeGuards.js";
7
7
  function resolvePresetPath(presetName) {
8
8
  const root = findPackageRoot(import.meta.url);
@@ -28,7 +28,7 @@ function loadPreset(presetName) {
28
28
  const message = error instanceof Error ? error.message : String(error);
29
29
  throw new Error(`Failed to read preset "${presetName}": ${message}`);
30
30
  }
31
- const parsed = load(content);
31
+ const parsed = parse(content);
32
32
  if (!Array.isArray(parsed)) {
33
33
  throw new TypeError(`Preset "${presetName}" must be a YAML array of label definitions`);
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williamthorsen/release-kit",
3
- "version": "5.3.1",
3
+ "version": "5.4.0",
4
4
  "description": "Version-bumping and changelog-generation toolkit for release workflows",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/williamthorsen/node-monorepo-tools/tree/main/packages/release-kit#readme",
@@ -34,16 +34,15 @@
34
34
  "dependencies": {
35
35
  "glob": "13.0.6",
36
36
  "jiti": "2.7.0",
37
- "js-yaml": "4.1.1",
38
37
  "json-stringify-pretty-compact": "4.0.0",
39
- "semver": "7.8.0",
38
+ "semver": "7.8.5",
39
+ "yaml": "2.9.0",
40
40
  "zod": "4.4.3",
41
- "@williamthorsen/nmr-core": "0.3.2"
41
+ "@williamthorsen/nmr-core": "0.4.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/js-yaml": "4.0.9",
45
44
  "@types/semver": "7.7.1",
46
- "smol-toml": "1.6.1"
45
+ "smol-toml": "1.7.0"
47
46
  },
48
47
  "engines": {
49
48
  "node": ">=18.17.0"