dev-prune 1.10.0 → 1.12.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/README.md +36 -16
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -667,7 +667,8 @@ window for every adapter under it.
|
|
|
667
667
|
|
|
668
668
|
A download cache is a bet that re-downloading costs less than the disk it occupies,
|
|
669
669
|
and somewhere the bet stops paying. `devp config set cache_max_gb uv=10,npm=10` is
|
|
670
|
-
where you say where: a ceiling in gibibytes
|
|
670
|
+
where you say where: a ceiling in gibibytes — GiB, the unit the report prints —
|
|
671
|
+
per manager, measured against that
|
|
671
672
|
manager's whole footprint. A manager over its cap is **marked** in `devp caches` —
|
|
672
673
|
setting one deletes nothing — and `devp caches clear --over-cap all` empties exactly
|
|
673
674
|
what is marked, when you type it. It is keyed by the names `devp caches clear` takes
|
|
@@ -913,6 +914,24 @@ the two lists **add up**. A list is not a decision, so a team declaration never
|
|
|
913
914
|
one you wrote yourself, and naming the same path in both leaves one directory, rebuilt
|
|
914
915
|
by the committed command.
|
|
915
916
|
|
|
917
|
+
And because the committed file is the whole team's, one declaration can be right for
|
|
918
|
+
everybody but you — the directory the project regenerates is the one your copy happens
|
|
919
|
+
to be holding something in. `prunable.exclude` is how you say so without editing a file
|
|
920
|
+
your colleagues share:
|
|
921
|
+
|
|
922
|
+
```json
|
|
923
|
+
{ "prunable": { "exclude": ["tools/vendor"] } }
|
|
924
|
+
```
|
|
925
|
+
|
|
926
|
+
Spelled the way a `path` is, so `tools/vendor`, `tools/vendor/`, `./tools/vendor` and
|
|
927
|
+
`tools\vendor` are one path; an exclusion that missed on a trailing slash would delete
|
|
928
|
+
the exact directory it was written to keep. It is honoured from whichever file names it,
|
|
929
|
+
because a veto only ever deletes less, and the entry it names leaves the pass entirely —
|
|
930
|
+
not deleted, and not reported as a refusal on every run either. Naming the same path in
|
|
931
|
+
both lists of one file is a typo rather than a decision, since the exclusion wins and the
|
|
932
|
+
declaration then never runs; `devp doctor` points that out. Delete the exclusion and
|
|
933
|
+
the declaration is back in force.
|
|
934
|
+
|
|
916
935
|
An out-of-range value is rejected with the range in the message rather than silently
|
|
917
936
|
clamped. `scan_depth` included: `config set` accepts `1`–`32` and refuses anything else
|
|
918
937
|
outright — the clamp to that range survives only as the backstop for a hand-edited
|
|
@@ -946,21 +965,21 @@ Full decision flow: [docs/BACKGROUND_AUTOMATION.md](docs/BACKGROUND_AUTOMATION.m
|
|
|
946
965
|
|
|
947
966
|
## How it compares
|
|
948
967
|
|
|
949
|
-
| |
|
|
950
|
-
| :---------------------------------------- |
|
|
951
|
-
|
|
|
952
|
-
| Many projects per repository |
|
|
953
|
-
| `.git` boundary enforced |
|
|
954
|
-
| Lockfile verified before deleting |
|
|
955
|
-
| Commit log **and** `mtime` activity check |
|
|
956
|
-
| One-command restore |
|
|
957
|
-
| Undo the last pass |
|
|
958
|
-
| Background scheduler |
|
|
959
|
-
| Git hook auto-registration |
|
|
960
|
-
| Per-repository config + 0ms opt-out |
|
|
961
|
-
| Machine-readable `--json` |
|
|
962
|
-
| AI agent skill |
|
|
963
|
-
| Runtime required |
|
|
968
|
+
| | `dev-prune` | `kondo` | `npkill` | `cargo-clean-all` | `pyclean` | `git clean` | `dust` / `ncdu` | BleachBit |
|
|
969
|
+
| :---------------------------------------- | :----------------------: | :---------------: | :------: | :---------------: | :-------: | :-------------: | :-------------: | :-------: |
|
|
970
|
+
| Package managers | **23** | ~20 project types | Node | Rust | Python | untracked files | — | OS caches |
|
|
971
|
+
| Many projects per repository | **✓** | ✓ | ✗ | ✗ | ✗ | n/a | n/a | ✗ |
|
|
972
|
+
| `.git` boundary enforced | **✓** | ✗ | ✗ | ✓ | ✗ | ✓ | ✗ | ✗ |
|
|
973
|
+
| Lockfile verified before deleting | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
974
|
+
| Commit log **and** `mtime` activity check | **✓** | `mtime` only | ✗ | `mtime` only | ✗ | ✗ | ✗ | ✗ |
|
|
975
|
+
| One-command restore | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
976
|
+
| Undo the last pass | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
977
|
+
| Background scheduler | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
978
|
+
| Git hook auto-registration | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
979
|
+
| Per-repository config + 0ms opt-out | **✓** | `--ignored-dirs` | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
980
|
+
| Machine-readable `--json` | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | partial | ✗ |
|
|
981
|
+
| AI agent skill | **✓** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
982
|
+
| Runtime required | **none** (static binary) | none | Node.js | none | Python | none | none | Python |
|
|
964
983
|
|
|
965
984
|
Longer analysis: [docs/MARKET_ANALYSIS.md](docs/MARKET_ANALYSIS.md).
|
|
966
985
|
|
|
@@ -1019,6 +1038,7 @@ Deeper: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) ·
|
|
|
1019
1038
|
| [Documentation hub](docs/README.md) | Index of everything below |
|
|
1020
1039
|
| [CLI reference](docs/CLI_REFERENCE.md) | Every command, flag, setting, exit code and `--json` document |
|
|
1021
1040
|
| [Safety invariants](docs/SAFETY_INVARIANTS.md) | The seven guarantees, and why each exists |
|
|
1041
|
+
| [Why it refuses](docs/WHY.md) | The argument the whole design came from |
|
|
1022
1042
|
| [Architecture](docs/ARCHITECTURE.md) · [HLD](docs/architecture/HLD.md) · [LLD](docs/architecture/LLD.md) | How it is built |
|
|
1023
1043
|
| [Background automation](docs/BACKGROUND_AUTOMATION.md) | Schedulers, hooks, chaining, and turning it all off |
|
|
1024
1044
|
| [IDE & editor integration](docs/IDE_INTEGRATION.md) | The extension, schema IntelliSense, and every editor it works in |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev-prune",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Universal, lockfile-safe workspace pruner. Reclaims disk space from idle Git repositories by deleting only dependency and build directories a lockfile can rebuild.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"dev-prune": "./bin/dev-prune.js",
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
"LICENSE.md"
|
|
13
13
|
],
|
|
14
14
|
"optionalDependencies": {
|
|
15
|
-
"dev-prune-darwin-arm64": "1.
|
|
16
|
-
"dev-prune-darwin-x64": "1.
|
|
17
|
-
"dev-prune-linux-arm64": "1.
|
|
18
|
-
"dev-prune-linux-x64": "1.
|
|
19
|
-
"dev-prune-windows-arm64": "1.
|
|
20
|
-
"dev-prune-windows-x64": "1.
|
|
21
|
-
"dev-prune-windows-x86": "1.
|
|
15
|
+
"dev-prune-darwin-arm64": "1.12.0",
|
|
16
|
+
"dev-prune-darwin-x64": "1.12.0",
|
|
17
|
+
"dev-prune-linux-arm64": "1.12.0",
|
|
18
|
+
"dev-prune-linux-x64": "1.12.0",
|
|
19
|
+
"dev-prune-windows-arm64": "1.12.0",
|
|
20
|
+
"dev-prune-windows-x64": "1.12.0",
|
|
21
|
+
"dev-prune-windows-x86": "1.12.0"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
24
|
"node": ">=20"
|