From 49bd6bc3ffe1d3507e00bae62c12d9b045363090 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Wed, 09 Aug 2023 05:52:49 +0000
Subject: [PATCH] better concurrency debugging, --concurrency flag for npx quartz build

---
 quartz/processors/parse.ts |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/quartz/processors/parse.ts b/quartz/processors/parse.ts
index 23af762..1340020 100644
--- a/quartz/processors/parse.ts
+++ b/quartz/processors/parse.ts
@@ -56,6 +56,8 @@
     platform: "node",
     format: "esm",
     packages: "external",
+    sourcemap: true,
+    sourcesContent: false,
     plugins: [
       {
         name: "css-and-scripts-as-text",
@@ -91,7 +93,7 @@
         }
 
         // base data properties that plugins may use
-        file.data.slug = slugifyFilePath(path.relative(argv.directory, file.path) as FilePath)
+        file.data.slug = slugifyFilePath(path.posix.relative(argv.directory, file.path) as FilePath)
         file.data.filePath = fp
 
         const ast = processor.parse(file)
@@ -103,7 +105,6 @@
         }
       } catch (err) {
         trace(`\nFailed to process \`${fp}\``, err as Error)
-        throw err
       }
     }
 
@@ -117,7 +118,7 @@
   const log = new QuartzLogger(argv.verbose)
 
   const CHUNK_SIZE = 128
-  let concurrency = fps.length < CHUNK_SIZE ? 1 : os.availableParallelism()
+  let concurrency = ctx.argv.concurrency ?? (fps.length < CHUNK_SIZE ? 1 : os.availableParallelism())
 
   let res: ProcessedContent[] = []
   log.start(`Parsing input files using ${concurrency} threads`)
@@ -143,7 +144,11 @@
       childPromises.push(pool.exec("parseFiles", [argv, chunk, ctx.allSlugs]))
     }
 
-    const results: ProcessedContent[][] = await WorkerPromise.all(childPromises)
+    const results: ProcessedContent[][] = await WorkerPromise.all(childPromises).catch((err) => {
+      const errString = err.toString().slice("Error:".length)
+      console.error(errString)
+      process.exit(1)
+    })
     res = results.flat()
     await pool.terminate()
   }

--
Gitblit v1.10.0