Jacky Zhao
2023-08-21 b69556c918e2a4a27b047e8de6b02861f04d5a9e
quartz/bootstrap-cli.mjs
@@ -255,7 +255,7 @@
    outro(`You're all set! Not sure what to do next? Try:
   • Customizing Quartz a bit more by editing \`quartz.config.ts\`
   • Running \`npx quartz build --serve\` to preview your Quartz locally
   • Hosting your Quartz online (see: https://quartz.jzhao.xyz/setup/hosting)
   • Hosting your Quartz online (see: https://quartz.jzhao.xyz/hosting)
`)
  })
  .command("update", "Get the latest Quartz updates", CommonArgv, async (argv) => {
@@ -394,8 +394,15 @@
    const buildMutex = new Mutex()
    const timeoutIds = new Set()
    let firstBuild = true
    const build = async (clientRefresh) => {
      await buildMutex.acquire()
      const release = await buildMutex.acquire()
      if (firstBuild) {
        firstBuild = false
      } else {
        console.log(chalk.yellow("Detected a source code change, doing a hard rebuild..."))
      }
      const result = await ctx.rebuild().catch((err) => {
        console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
        console.log(`Reason: ${chalk.grey(err)}`)
@@ -418,7 +425,7 @@
      const { default: buildQuartz } = await import(cacheFile + `?update=${randomUUID()}`)
      await buildQuartz(argv, clientRefresh)
      clientRefresh()
      buildMutex.release()
      release()
    }
    const rebuild = (clientRefresh) => {
@@ -428,9 +435,7 @@
    }
    if (argv.serve) {
      const wss = new WebSocketServer({ port: 3001 })
      const connections = []
      wss.on("connection", (ws) => connections.push(ws))
      const clientRefresh = () => connections.forEach((conn) => conn.send("rebuild"))
      if (argv.baseDir !== "" && !argv.baseDir.startsWith("/")) {
@@ -515,6 +520,8 @@
        return serve()
      })
      server.listen(argv.port)
      const wss = new WebSocketServer({ port: 3001 })
      wss.on("connection", (ws) => connections.push(ws))
      console.log(
        chalk.cyan(
          `Started a Quartz server listening at http://localhost:${argv.port}${argv.baseDir}`,
@@ -526,7 +533,6 @@
          ignoreInitial: true,
        })
        .on("all", async () => {
          console.log(chalk.yellow("Detected a source code change, doing a hard rebuild..."))
          rebuild(clientRefresh)
        })
    } else {