fix: rebuild errors on windows (#692)

This commit is contained in:
kabirgh 2024-01-15 16:39:16 +00:00 committed by GitHub
parent f36376503a
commit 8eec47c340
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 5 deletions

View File

@ -2,7 +2,6 @@ import sourceMapSupport from "source-map-support"
sourceMapSupport.install(options) sourceMapSupport.install(options)
import path from "path" import path from "path"
import { PerfTimer } from "./util/perf" import { PerfTimer } from "./util/perf"
import { rimraf } from "rimraf"
import { isGitIgnored } from "globby" import { isGitIgnored } from "globby"
import chalk from "chalk" import chalk from "chalk"
import { parseMarkdown } from "./processors/parse" import { parseMarkdown } from "./processors/parse"
@ -13,6 +12,7 @@ import { FilePath, joinSegments, slugifyFilePath } from "./util/path"
import chokidar from "chokidar" import chokidar from "chokidar"
import { ProcessedContent } from "./plugins/vfile" import { ProcessedContent } from "./plugins/vfile"
import { Argv, BuildCtx } from "./util/ctx" import { Argv, BuildCtx } from "./util/ctx"
import { rmrf } from "./util/fs"
import { glob, toPosixPath } from "./util/glob" import { glob, toPosixPath } from "./util/glob"
import { trace } from "./util/trace" import { trace } from "./util/trace"
import { options } from "./util/sourcemap" import { options } from "./util/sourcemap"
@ -40,7 +40,7 @@ async function buildQuartz(argv: Argv, mut: Mutex, clientRefresh: () => void) {
const release = await mut.acquire() const release = await mut.acquire()
perf.addEvent("clean") perf.addEvent("clean")
await rimraf(output) await rmrf(output)
console.log(`Cleaned output directory \`${output}\` in ${perf.timeSince("clean")}`) console.log(`Cleaned output directory \`${output}\` in ${perf.timeSince("clean")}`)
perf.addEvent("glob") perf.addEvent("glob")
@ -145,7 +145,7 @@ async function startServing(
// TODO: we can probably traverse the link graph to figure out what's safe to delete here // TODO: we can probably traverse the link graph to figure out what's safe to delete here
// instead of just deleting everything // instead of just deleting everything
await rimraf(argv.output) await rmrf(argv.output)
await emitContent(ctx, filteredContent) await emitContent(ctx, filteredContent)
console.log(chalk.green(`Done rebuilding in ${perf.timeSince()}`)) console.log(chalk.green(`Done rebuilding in ${perf.timeSince()}`))
} catch (err) { } catch (err) {

View File

@ -5,7 +5,6 @@ import chalk from "chalk"
import { sassPlugin } from "esbuild-sass-plugin" import { sassPlugin } from "esbuild-sass-plugin"
import fs from "fs" import fs from "fs"
import { intro, outro, select, text } from "@clack/prompts" import { intro, outro, select, text } from "@clack/prompts"
import { rimraf } from "rimraf"
import chokidar from "chokidar" import chokidar from "chokidar"
import prettyBytes from "pretty-bytes" import prettyBytes from "pretty-bytes"
import { execSync, spawnSync } from "child_process" import { execSync, spawnSync } from "child_process"
@ -21,6 +20,7 @@ import {
gitPull, gitPull,
popContentFolder, popContentFolder,
stashContentFolder, stashContentFolder,
rmrf,
} from "./helpers.js" } from "./helpers.js"
import { import {
UPSTREAM_NAME, UPSTREAM_NAME,
@ -109,7 +109,7 @@ export async function handleCreate(argv) {
if (contentStat.isSymbolicLink()) { if (contentStat.isSymbolicLink()) {
await fs.promises.unlink(contentFolder) await fs.promises.unlink(contentFolder)
} else { } else {
await rimraf(contentFolder) await rmrf(contentFolder)
} }
} }

View File

@ -3,6 +3,7 @@ import chalk from "chalk"
import { contentCacheFolder } from "./constants.js" import { contentCacheFolder } from "./constants.js"
import { spawnSync } from "child_process" import { spawnSync } from "child_process"
import fs from "fs" import fs from "fs"
import { rimraf } from "rimraf"
export function escapePath(fp) { export function escapePath(fp) {
return fp return fp
@ -52,3 +53,11 @@ export async function popContentFolder(contentFolder) {
}) })
await fs.promises.rm(contentCacheFolder, { force: true, recursive: true }) await fs.promises.rm(contentCacheFolder, { force: true, recursive: true })
} }
export async function rmrf(path) {
if (os.platform() == "win32") {
return rimraf.windows(path)
} else {
return rimraf(path)
}
}

13
quartz/util/fs.ts Normal file
View File

@ -0,0 +1,13 @@
import os from "os"
import { rimraf, RimrafAsyncOptions } from "rimraf"
export async function rmrf(
path: string | string[],
opt?: RimrafAsyncOptions | undefined,
): Promise<boolean> {
if (os.platform() == "win32") {
return rimraf.windows(path, opt)
} else {
return rimraf(path, opt)
}
}