@williamthorsen/release-kit 5.3.1 → 5.3.2

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,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 5.3.2 — 2026-06-16
6
+
7
+ ### ♻️ Refactoring
8
+
9
+ - Migrate from js-yaml to yaml (#410)
10
+
11
+ 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.
12
+
5
13
  ## 5.3.1 — 2026-05-19
6
14
 
7
15
  ### 🐛 Bug fixes
@@ -449,6 +457,7 @@ All notable changes to this project will be documented in this file.
449
457
  - Cover multi-changelogPaths and error paths (#44)
450
458
 
451
459
  Add three tests for previously untested code paths:
460
+
452
461
  - `releasePrepareMono`: component with two `changelogPaths` entries, asserting `git-cliff` is invoked once per path with the correct `--output` target.
453
462
  - `getCommitsSinceTarget`: `git describe` failure with a non-128 exit status propagates as a wrapped error instead of being swallowed.
454
463
  - `getCommitsSinceTarget`: `git log` failure is wrapped and re-thrown with the commit range in the message.
@@ -465,6 +474,10 @@ All notable changes to this project will be documented in this file.
465
474
 
466
475
  ### 🎉 Features
467
476
 
477
+ - Migrate release-kit from toolbelt (#18)
478
+
479
+ 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.
480
+
468
481
  - 🚨 **Breaking:** Slim down release workflow by removing unnecessary pnpm install (#21)
469
482
 
470
483
  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
@@ -4,15 +4,7 @@ Version-bumping and changelog-generation toolkit for release workflows.
4
4
 
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
- <!-- section:release-notes -->
8
- ## Release notes — v5.3.1 (2026-05-19)
9
-
10
- ### 🐛 Bug fixes
11
-
12
- - Validate overrides against the full release history (#401)
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.
15
- <!-- /section:release-notes -->
7
+ <!-- section:release-notes --><!-- /section:release-notes -->
16
8
 
17
9
  ## Installation
18
10
 
package/dist/esm/.cache CHANGED
@@ -1 +1 @@
1
- 376cb01707ee2fb8afe186dfa7baa15e2a0c982201fae4c30632cf598d87d09c
1
+ a675735fcc8ee6abbe7201c05a9cec6517a6495d796f61322b141ed79e4e7bcf
@@ -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.3.2",
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,14 +34,13 @@
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.4",
39
+ "yaml": "2.9.0",
40
40
  "zod": "4.4.3",
41
41
  "@williamthorsen/nmr-core": "0.3.2"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/js-yaml": "4.0.9",
45
44
  "@types/semver": "7.7.1",
46
45
  "smol-toml": "1.6.1"
47
46
  },