From 50f0ba29a247c81b5f29d290e54f7e1aabb18ab3 Mon Sep 17 00:00:00 2001
From: Zijing Zhang <50045289+pluveto@users.noreply.github.com>
Date: Thu, 16 Nov 2023 23:31:20 +0000
Subject: [PATCH] feat: cname emitter (#590)
---
quartz/plugins/emitters/index.ts | 1 +
quartz/plugins/emitters/cname.ts | 29 +++++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/quartz/plugins/emitters/cname.ts b/quartz/plugins/emitters/cname.ts
new file mode 100644
index 0000000..ffe2c6d
--- /dev/null
+++ b/quartz/plugins/emitters/cname.ts
@@ -0,0 +1,29 @@
+import { FilePath, joinSegments } from "../../util/path"
+import { QuartzEmitterPlugin } from "../types"
+import fs from "fs"
+import chalk from "chalk"
+
+export function extractDomainFromBaseUrl(baseUrl: string) {
+ const url = new URL(`https://${baseUrl}`)
+ return url.hostname
+}
+
+export const CNAME: QuartzEmitterPlugin = () => ({
+ name: "CNAME",
+ getQuartzComponents() {
+ return []
+ },
+ async emit({ argv, cfg }, _content, _resources, _emit): Promise<FilePath[]> {
+ if (!cfg.configuration.baseUrl) {
+ console.warn(chalk.yellow("CNAME emitter requires `baseUrl` to be set in your configuration"))
+ return []
+ }
+ const path = joinSegments(argv.output, "CNAME")
+ const content = extractDomainFromBaseUrl(cfg.configuration.baseUrl)
+ if (!content) {
+ return []
+ }
+ fs.writeFileSync(path, content)
+ return [path] as FilePath[]
+ },
+})
diff --git a/quartz/plugins/emitters/index.ts b/quartz/plugins/emitters/index.ts
index 99a2c54..bc378c4 100644
--- a/quartz/plugins/emitters/index.ts
+++ b/quartz/plugins/emitters/index.ts
@@ -7,3 +7,4 @@
export { Static } from "./static"
export { ComponentResources } from "./componentResources"
export { NotFoundPage } from "./404"
+export { CNAME } from "./cname"
--
Gitblit v1.10.0