configuration using json

This commit is contained in:
Nathan Price 2025-01-17 14:47:12 -05:00
parent 8cf3e3001f
commit 21ad72400d
No known key found for this signature in database
2 changed files with 158 additions and 82 deletions

137
config.json Normal file
View File

@ -0,0 +1,137 @@
{
"configuration": {
"pageTitle": "🪴 Quartz 4.0",
"pageTitleSuffix": "",
"enableSPA": true,
"enablePopovers": true,
"analytics": {
"provider": "plausible"
},
"locale": "en-US",
"baseUrl": "quartz.jzhao.xyz",
"ignorePatterns": ["private", "templates", ".obsidian"],
"defaultDateType": "created",
"generateSocialImages": false,
"theme": {
"fontOrigin": "googleFonts",
"cdnCaching": true,
"typography": {
"header": "Schibsted Grotesk",
"body": "Source Sans Pro",
"code": "IBM Plex Mono"
},
"colors": {
"lightMode": {
"light": "#faf8f8",
"lightgray": "#e5e5e5",
"gray": "#b8b8b8",
"darkgray": "#4e4e4e",
"dark": "#2b2b2b",
"secondary": "#284b63",
"tertiary": "#84a59d",
"highlight": "rgba(143, 159, 169, 0.15)",
"textHighlight": "#fff23688"
},
"darkMode": {
"light": "#161618",
"lightgray": "#393639",
"gray": "#646464",
"darkgray": "#d4d4d4",
"dark": "#ebebec",
"secondary": "#7b97aa",
"tertiary": "#84a59d",
"highlight": "rgba(143, 159, 169, 0.15)",
"textHighlight": "#b3aa0288"
}
}
}
},
"plugins": {
"transformers": [
{
"name": "FrontMatter"
},
{
"name": "CreatedModifiedDate",
"config": {
"priority": ["frontmatter", "filesystem"]
}
},
{
"name": "SyntaxHighlighting",
"config": {
"theme": {
"light": "github-light",
"dark": "github-dark"
},
"keepBackground": false
}
},
{
"name": "ObsidianFlavoredMarkdown",
"config": {
"enableInHtmlEmbed": false
}
},
{
"name": "GitHubFlavoredMarkdown"
},
{
"name": "TableOfContents"
},
{
"name": "CrawlLinks",
"config": {
"markdownLinkResolution": "shortest"
}
},
{
"name": "Description"
},
{
"name": "Latex",
"config": {
"renderEngine": "katex"
}
}
],
"filters": [
{
"name": "RemoveDrafts"
}
],
"emitters": [
{
"name": "AliasRedirects"
},
{
"name": "ComponentResources"
},
{
"name": "ContentPage"
},
{
"name": "FolderPage"
},
{
"name": "TagPage"
},
{
"name": "ContentIndex",
"config": {
"enableSiteMap": true,
"enableRSS": true
}
},
{
"name": "Assets"
},
{
"name": "Static"
},
{
"name": "NotFoundPage"
}
]
}
}

View File

@ -1,94 +1,33 @@
import { QuartzConfig } from "./quartz/cfg" import { QuartzConfig } from "./quartz/cfg"
import * as Plugin from "./quartz/plugins" import * as Plugin from "./quartz/plugins"
import * as fs from "fs"
import * as path from "path"
/** /**
* Quartz 4.0 Configuration * Quartz 4.0 Configuration
* *
* See https://quartz.jzhao.xyz/configuration for more information. * See https://quartz.jzhao.xyz/configuration for more information.
*/ */
const configPath = process.env.QUARTZ_CONFIG_PATH || path.resolve(__dirname, "config.json")
const rawData = fs.readFileSync(configPath, "utf-8")
const configData = JSON.parse(rawData)
function loadPlugins<T>(pluginList: { name: string; config?: Record<string, unknown> }[]): T[] {
return pluginList.map((plugin) => {
if (plugin.config) {
return (Plugin as any)[plugin.name](plugin.config)
}
return (Plugin as any)[plugin.name]()
})
}
const config: QuartzConfig = { const config: QuartzConfig = {
configuration: { configuration: configData.configuration,
pageTitle: "🪴 Quartz 4.0",
pageTitleSuffix: "",
enableSPA: true,
enablePopovers: true,
analytics: {
provider: "plausible",
},
locale: "en-US",
baseUrl: "quartz.jzhao.xyz",
ignorePatterns: ["private", "templates", ".obsidian"],
defaultDateType: "created",
generateSocialImages: false,
theme: {
fontOrigin: "googleFonts",
cdnCaching: true,
typography: {
header: "Schibsted Grotesk",
body: "Source Sans Pro",
code: "IBM Plex Mono",
},
colors: {
lightMode: {
light: "#faf8f8",
lightgray: "#e5e5e5",
gray: "#b8b8b8",
darkgray: "#4e4e4e",
dark: "#2b2b2b",
secondary: "#284b63",
tertiary: "#84a59d",
highlight: "rgba(143, 159, 169, 0.15)",
textHighlight: "#fff23688",
},
darkMode: {
light: "#161618",
lightgray: "#393639",
gray: "#646464",
darkgray: "#d4d4d4",
dark: "#ebebec",
secondary: "#7b97aa",
tertiary: "#84a59d",
highlight: "rgba(143, 159, 169, 0.15)",
textHighlight: "#b3aa0288",
},
},
},
},
plugins: { plugins: {
transformers: [ transformers: loadPlugins(configData.plugins.transformers),
Plugin.FrontMatter(), filters: loadPlugins(configData.plugins.filters),
Plugin.CreatedModifiedDate({ emitters: loadPlugins(configData.plugins.emitters),
priority: ["frontmatter", "filesystem"],
}),
Plugin.SyntaxHighlighting({
theme: {
light: "github-light",
dark: "github-dark",
},
keepBackground: false,
}),
Plugin.ObsidianFlavoredMarkdown({ enableInHtmlEmbed: false }),
Plugin.GitHubFlavoredMarkdown(),
Plugin.TableOfContents(),
Plugin.CrawlLinks({ markdownLinkResolution: "shortest" }),
Plugin.Description(),
Plugin.Latex({ renderEngine: "katex" }),
],
filters: [Plugin.RemoveDrafts()],
emitters: [
Plugin.AliasRedirects(),
Plugin.ComponentResources(),
Plugin.ContentPage(),
Plugin.FolderPage(),
Plugin.TagPage(),
Plugin.ContentIndex({
enableSiteMap: true,
enableRSS: true,
}),
Plugin.Assets(),
Plugin.Static(),
Plugin.NotFoundPage(),
],
}, },
} }