fix: builds should no accumulate on repeated changes (closes )

This commit is contained in:
Jacky Zhao 2023-08-23 11:36:34 -07:00
parent 3209f7c3b7
commit a1a1e7e1e0
2 changed files with 47 additions and 47 deletions

View file

@ -393,10 +393,16 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started.
})
const buildMutex = new Mutex()
const timeoutIds = new Set()
let lastBuildMs = 0
let cleanupBuild = null
const build = async (clientRefresh) => {
const buildStart = new Date().getTime()
lastBuildMs = buildStart
const release = await buildMutex.acquire()
if (lastBuildMs > buildStart) {
release()
return
}
if (cleanupBuild) {
await cleanupBuild()
@ -428,12 +434,6 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started.
clientRefresh()
}
const rebuild = (clientRefresh) => {
timeoutIds.forEach((id) => clearTimeout(id))
timeoutIds.clear()
timeoutIds.add(setTimeout(() => build(clientRefresh), 250))
}
if (argv.serve) {
const connections = []
const clientRefresh = () => connections.forEach((conn) => conn.send("rebuild"))
@ -539,7 +539,7 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started.
ignoreInitial: true,
})
.on("all", async () => {
rebuild(clientRefresh)
build(clientRefresh)
})
} else {
await build(() => {})