From c82f845a405ddb6df513852d593805129202fb4c Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Wed, 11 Mar 2026 18:22:59 +0100 Subject: [PATCH] feat(cli): configure baseUrl during create --- quartz.config.yaml | 270 ----------------------------------------- quartz/cli/args.js | 5 + quartz/cli/handlers.js | 23 ++++ 3 files changed, 28 insertions(+), 270 deletions(-) delete mode 100644 quartz.config.yaml diff --git a/quartz.config.yaml b/quartz.config.yaml deleted file mode 100644 index 689a883f1..000000000 --- a/quartz.config.yaml +++ /dev/null @@ -1,270 +0,0 @@ -# yaml-language-server: $schema=../../plugins/quartz-plugins.schema.json -# Template: default -# A clean Quartz setup with sensible defaults. -configuration: - pageTitle: Quartz 5 - pageTitleSuffix: "" - enableSPA: true - enablePopovers: true - analytics: - provider: plausible - locale: en-US - baseUrl: quartz.jzhao.xyz - ignorePatterns: - - private - - templates - - .obsidian - defaultDateType: modified - 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: - - source: github:quartz-community/note-properties - enabled: true - options: - includeAll: false - includedProperties: - - description - - tags - - aliases - excludedProperties: [] - hidePropertiesView: false - delimiters: "---" - language: yaml - order: 5 - - source: github:quartz-community/created-modified-date - enabled: true - options: - priority: - - frontmatter - - git - - filesystem - order: 10 - - source: github:quartz-community/syntax-highlighting - enabled: true - options: - theme: - light: github-light - dark: github-dark - keepBackground: false - order: 20 - - source: github:quartz-community/obsidian-flavored-markdown - enabled: true - options: - enableInHtmlEmbed: false - enableCheckbox: true - order: 30 - - source: github:quartz-community/github-flavored-markdown - enabled: true - order: 40 - - source: github:quartz-community/table-of-contents - enabled: true - order: 50 - - source: github:quartz-community/crawl-links - enabled: true - options: - markdownLinkResolution: shortest - order: 60 - - source: github:quartz-community/description - enabled: true - order: 70 - - source: github:quartz-community/latex - enabled: true - options: - renderEngine: katex - order: 80 - - source: github:quartz-community/citations - enabled: false - order: 85 - - source: github:quartz-community/hard-line-breaks - enabled: false - order: 90 - - source: github:quartz-community/ox-hugo - enabled: false - order: 91 - - source: github:quartz-community/roam - enabled: false - order: 92 - - source: github:quartz-community/remove-draft - enabled: true - - source: github:quartz-community/explicit-publish - enabled: false - - source: github:quartz-community/alias-redirects - enabled: true - - source: github:quartz-community/content-index - enabled: true - options: - enableSiteMap: true - enableRSS: true - - source: github:quartz-community/favicon - enabled: true - - source: github:quartz-community/og-image - enabled: true - - source: github:quartz-community/cname - enabled: true - - source: github:quartz-community/canvas-page - enabled: true - - source: github:quartz-community/bases-page - enabled: true - - source: github:quartz-community/content-page - enabled: true - - source: github:quartz-community/folder-page - enabled: true - - source: github:quartz-community/tag-page - enabled: true - - source: github:quartz-community/explorer - enabled: true - layout: - position: left - priority: 50 - - source: github:quartz-community/graph - enabled: true - layout: - position: right - priority: 10 - - source: github:quartz-community/search - enabled: true - layout: - position: left - priority: 20 - group: toolbar - groupOptions: - grow: true - - source: github:quartz-community/backlinks - enabled: true - layout: - position: right - priority: 30 - - source: github:quartz-community/article-title - enabled: true - layout: - position: beforeBody - priority: 10 - - source: github:quartz-community/content-meta - enabled: true - layout: - position: beforeBody - priority: 20 - - source: github:quartz-community/tag-list - enabled: false - layout: - position: beforeBody - priority: 30 - - source: github:quartz-community/page-title - enabled: true - layout: - position: left - priority: 10 - - source: github:quartz-community/darkmode - enabled: true - layout: - position: left - priority: 30 - group: toolbar - - source: github:quartz-community/reader-mode - enabled: true - layout: - position: left - priority: 35 - group: toolbar - - source: github:quartz-community/breadcrumbs - enabled: true - layout: - position: beforeBody - priority: 5 - condition: not-index - - source: github:quartz-community/comments - enabled: false - options: - provider: giscus - options: {} - layout: - position: afterBody - priority: 10 - - source: github:quartz-community/footer - enabled: true - options: - links: - GitHub: https://github.com/jackyzha0/quartz - Discord Community: https://discord.gg/cRFFHYye7t - - source: github:quartz-community/recent-notes - enabled: false - - source: github:quartz-community/spacer - enabled: true - options: {} - order: 25 - layout: - position: left - priority: 25 - display: mobile-only - - source: github:quartz-community/bases-page - enabled: true - options: {} - order: 50 - - source: github:quartz-community/note-properties - enabled: true - options: - includeAll: false - includedProperties: - - description - - tags - - aliases - excludedProperties: [] - hidePropertiesView: false - delimiters: "---" - language: yaml - order: 5 - layout: - position: beforeBody - priority: 15 - display: all -layout: - groups: - toolbar: - priority: 35 - direction: row - gap: 0.5rem - byPageType: - "404": - positions: - beforeBody: [] - left: [] - right: [] - content: {} - folder: - exclude: - - reader-mode - positions: - right: [] - tag: - exclude: - - reader-mode - positions: - right: [] - canvas: {} - bases: {} diff --git a/quartz/cli/args.js b/quartz/cli/args.js index ad0841698..a737b446f 100644 --- a/quartz/cli/args.js +++ b/quartz/cli/args.js @@ -32,6 +32,11 @@ export const CreateArgv = { choices: ["new", "copy", "symlink"], describe: "strategy for content folder setup", }, + baseUrl: { + string: true, + alias: ["b"], + describe: "base URL for your Quartz site (e.g. mysite.github.io/quartz)", + }, links: { string: true, alias: ["l"], diff --git a/quartz/cli/handlers.js b/quartz/cli/handlers.js index da419f088..792f83f89 100644 --- a/quartz/cli/handlers.js +++ b/quartz/cli/handlers.js @@ -35,6 +35,7 @@ import { readPluginsJson, writePluginsJson, extractPluginName, + updateGlobalConfig, } from "./plugin-data.js" import { UPSTREAM_NAME, @@ -68,6 +69,7 @@ export async function handleCreate(argv) { let linkResolutionStrategy = argv.links?.toLowerCase() const sourceDirectory = argv.source let template = argv.template?.toLowerCase() + let baseUrl = argv.baseUrl // If all cmd arguments were provided, check if they're valid if (setupStrategy && linkResolutionStrategy) { @@ -253,6 +255,24 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started. ) } + // Base URL prompt + if (!baseUrl) { + baseUrl = exitIfCancel( + await text({ + message: "Enter the base URL for your Quartz site (e.g. mysite.github.io/quartz)", + placeholder: "mysite.github.io", + validate(value) { + if (!value || value.trim().length === 0) { + return "Base URL cannot be empty" + } + }, + }), + ) + } + + // Strip protocol prefix if user included it + baseUrl = baseUrl.replace(/^https?:\/\//, "").replace(/\/+$/, "") + // Create config if it doesn't exist if (!configExists()) { if (template && template !== "default") { @@ -279,6 +299,9 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started. } } + // Update baseUrl in configuration + updateGlobalConfig({ baseUrl }) + // setup remote execSync(`git remote show upstream || git remote add upstream ${QUARTZ_SOURCE_REPO}`, { stdio: "ignore",