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:
@@ -278,7 +278,7 @@ yargs(hideBin(process.argv))
|
||||
await handlePluginStatus()
|
||||
},
|
||||
)
|
||||
.showHelpOnFail(false)
|
||||
.showHelpOnFail(true)
|
||||
.help()
|
||||
.strict()
|
||||
.demandCommand().argv
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
Reference in New Issue
Block a user