fix: show help on invalid CLI commands and debounce watch rebuilds

- Change .showHelpOnFail(false) to true for better new-user UX
- Add 100ms debounce to watch mode rebuilds to batch rapid file changes
This commit is contained in:
saberzero1
2026-05-24 17:23:11 +02:00
parent 455985f7ef
commit 2455c87167
2 changed files with 14 additions and 10 deletions

View File

@@ -278,7 +278,7 @@ yargs(hideBin(process.argv))
await handlePluginStatus()
},
)
.showHelpOnFail(false)
.showHelpOnFail(true)
.help()
.strict()
.demandCommand().argv

View File

@@ -165,30 +165,34 @@ async function startWatching(
})
const changes: ChangeEvent[] = []
let rebuildTimeout: ReturnType<typeof setTimeout> | null = null
const scheduleRebuild = () => {
if (rebuildTimeout) clearTimeout(rebuildTimeout)
rebuildTimeout = setTimeout(() => {
rebuildTimeout = null
rebuild(changes, clientRefresh, buildData).catch((err) => {
console.error(styleText("red", "Rebuild failed:"), err.message ?? err)
})
}, 100)
}
watcher
.on("add", (fp) => {
fp = toPosixPath(fp)
if (buildData.ignored(fp)) return
changes.push({ path: fp as FilePath, type: "add" })
rebuild(changes, clientRefresh, buildData).catch((err) => {
console.error(styleText("red", "Rebuild failed:"), err.message ?? err)
})
scheduleRebuild()
})
.on("change", (fp) => {
fp = toPosixPath(fp)
if (buildData.ignored(fp)) return
changes.push({ path: fp as FilePath, type: "change" })
rebuild(changes, clientRefresh, buildData).catch((err) => {
console.error(styleText("red", "Rebuild failed:"), err.message ?? err)
})
scheduleRebuild()
})
.on("unlink", (fp) => {
fp = toPosixPath(fp)
if (buildData.ignored(fp)) return
changes.push({ path: fp as FilePath, type: "delete" })
rebuild(changes, clientRefresh, buildData).catch((err) => {
console.error(styleText("red", "Rebuild failed:"), err.message ?? err)
})
scheduleRebuild()
})
return async () => {