watskeburt

List files changed since a git revision

MIT 50 个版本
安装
npm install watskeburt
yarn add watskeburt
pnpm add watskeburt
bun add watskeburt
README

watskeburt

Get changed files & their statuses since any git revision

:construction_worker: usage

:scroll: API

import { list, getSHA } from "watskeburt";

// print the SHA1 of the current HEAD
console.log(await getSHA());

// list all files that differ between 'main' and the current revision (including
// files not staged for commit and files not under revision control)
/** @type {import('watskeburt').IChange[]} */
const lChangedFiles = await list({ oldRevision: "main" });

// list all files that differ between 'v0.6.1' and 'v0.7.1' (by definition
// won't include files staged for commit and/ or not under revision control)
/** @type {import('watskeburt').IChange[]} */
const lChangedFiles = await list({
  oldRevision: "v0.6.1",
  newRevision: "v0.7.1",
});

// list all files that differ between 'main' and the current revision
// (including untracked files, output as JSON)
/** @type {import('watskeburt').IChange[]|string} */
const lChangedFiles = await list({
  oldRevision: "main",
  trackedOnly: false, // when set to true leaves out files not under revision control
  outputType: "json", // options: "json" and "regex"
});

The array of changes this returns looks like this:

[
  {
    name: "doc/cli.md",
    type: "modified",
  },
  {
    name: "test/thing.spec.mjs",
    type: "renamed",
    oldName: "test/old-thing.spec.mjs",
  },
  {
    name: "src/not-tracked-yet.mjs",
    type: "untracked",
  },
];

:shell: cli

Works with node >=22

# list all JavaScript-ish files changed since main in a regular expression
$ npx watskeburt main
^(src/cli[.]mjs|src/formatters/regex[.]mjs|src/version[.]mjs)$

This emits a regex that contains all changed files that could be source files in the JavaScript ecosystem (.js, .mjs, .ts, .tsx ...). It can be used in e.g. dependency-cruiser's --focus and --reaches filters.

The JSON output (= the array above, serialized) also contains all other extensions.

Usage: watskeburt [options] [old-revision] [new-revision]

lists files & their statuses since [old-revision] or between [old-revision] and [new-revision].

-> When you don't pass a revision old-revision defaults to the current one.

Options:
  -T, --outputType <type>  what format to emit (choices: "json", "regex", default: "regex")
  --trackedOnly            only take tracked files into account (default: false)
  -V, --version            output the version number
  -e, --extensions <list>  comma separated list of file extensions to consider
                           - pass "*" to consider all extensions
                           - currently applicable only to the "regex" reporter
                           - defaults to most popular extensions in the
                             JavaScript/ TypeScript ecosystem
  -h, --help               display help for command

Default list of extensions (cli, regex reporter only): "cjs,cjsx,coffee,csx,cts,js,json,jsx,litcoffee,ls,mjs,mts,svelte,ts,tsx,vue,vuex".

why?

I needed something robust to support caching in dependency-cruiser and to run standalone to use in combination with dependency-cruiser.

A few specialized packages like this existed, but they had fallen out of maintenance. More generic packages still were maintained, but for my use case they were overkill.

🇳🇱 what does 'watskeburt' mean?

Wazzup.

watskeburt is a fast pronunciation of the Dutch "wat is er gebeurd?" (what has happened?) or "wat er is gebeurd" (what has happened).

版本列表
6.0.0 2026-06-15
5.0.3 2026-02-28
5.0.2 2026-01-22
5.0.1 2026-01-18
5.0.0-beta-3 2025-09-21
5.0.0 2025-10-29
4.2.3 2025-02-14
4.2.2 2024-12-03
4.2.1 2024-12-03
4.2.0 2024-12-02
4.1.1 2024-11-24
4.1.0 2024-07-06
4.0.2 2024-04-13
4.0.1 2024-03-14
4.0.0 2024-02-24
3.0.0 2024-02-21
2.0.5 2024-01-27
2.0.4 2023-12-27
2.0.3 2023-11-30
2.0.2 2023-11-21
2.0.1 2023-10-23
2.0.0 2023-10-04
1.0.1 2023-08-26
0.12.2 2023-08-21
0.12.1 2023-08-02
0.12.0 2023-08-02
0.11.6 2023-07-10
0.11.5 2023-06-20
0.11.4 2023-06-17
0.11.3 2023-05-28
0.11.2 2023-05-15
0.11.1 2023-04-29
0.11.0 2023-04-28
0.10.2 2023-04-12
0.10.1 2023-03-19
0.10.0 2023-02-19
0.9.2 2023-02-14
0.9.1 2023-01-22
0.9.0 2022-11-19
0.8.1 2022-10-22
0.8.0 2022-10-22
0.7.0 2022-08-03
0.6.1 2022-08-02
0.6.0 2022-07-24
0.5.1 2022-07-24
0.5.0 2022-07-10
0.4.0 2022-07-10
0.3.0 2022-07-09
0.2.0 2022-07-07
0.1.0 2022-07-07