From 028bcec62c3ca019a96783f17eaee1ecce6e092b Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sun, 6 Aug 2023 17:09:29 -0700 Subject: [PATCH] mobile fixes, fix bug when linking to anchor on home, docs --- content/build.md | 22 +++++++++++++ content/configuration.md | 42 ++++++++++++++++++------- content/features/popover previews.md | 2 +- content/features/upcoming features.md | 1 + content/hosting.md | 43 ++++++++++++++++++++++++++ content/index.md | 7 ++--- content/migrating from Quartz 3.md | 26 ++++++++++++++++ content/quartz-layout.png | Bin 0 -> 63222 bytes quartz.layout.ts | 4 +-- quartz/cfg.ts | 1 + quartz/path.ts | 2 +- quartz/plugins/transformers/links.ts | 3 +- quartz/plugins/transformers/ofm.ts | 1 - quartz/styles/base.scss | 4 ++- 14 files changed, 134 insertions(+), 24 deletions(-) create mode 100644 content/quartz-layout.png diff --git a/content/build.md b/content/build.md index 2857057..ac6a410 100644 --- a/content/build.md +++ b/content/build.md @@ -1,3 +1,25 @@ --- title: "Building your Quartz" --- + +Once you've [[index#🪴 Get Started|initialized]] Quartz, let's see what it looks like locally. + +```bash +npx quartz build --serve +``` + +Then, open a web browser and visit `http://localhost:8080/` to view it! + +Want to change how Quartz looks? You can edit `quartz.config.ts` to customize and configure your Quartz, including styles, layout, and more. Read the [[configuration]] page for more information on what each field in the configuration does. + +Once you're happy with it, let's see how to [[hosting|deploy Quartz to the web]]. + +> [!hint] Flags and options +> For full help options, you can run `npx quartz build --help`. +> +> Most of these have sensible defaults but you can override them if you have a custom setup: +> - `-d` or `--directory`: the content folder. This is normally just `content` +> - `-v` or `--verbose`: print out extra logging information +> - `-o` or `--output`: the output folder. This is normally just `public` +> - `--serve`: run a local hot-reloading server to preview your Quartz +> - `--port`: what port to run the local preview server on \ No newline at end of file diff --git a/content/configuration.md b/content/configuration.md index e31dbc2..ef0bf9b 100644 --- a/content/configuration.md +++ b/content/configuration.md @@ -4,11 +4,12 @@ title: Configuration Quartz is meant to be extremely configurable, even if you don't know any coding. Most of the configuration you should need can be done by just editing `quartz.config.ts`. -If you edit this file using a text-editor that has TypeScript language support like VSCode, it will warn you when you you've made an error in your configuration. +> [!tip] +> If you edit this file using a text-editor that has TypeScript language support like VSCode, it will warn you when you you've made an error in your configuration, helping you avoid configuration mistakes! This configuration can be broken down into two main parts: -```ts +```ts title="quartz.config.ts" const config: QuartzConfig = { configuration: { ... }, plugins: { ... }, @@ -81,24 +82,41 @@ If you'd like to make your own plugins, read the guide on [[making plugins]] for Certain emitters may also output [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML) files. To enable easy customization, these emitters allow you to fully rearrange the layout of the page. The default page layouts can be found in `quartz.layout.ts`. -Ultimately, each page is composed of multiple different sections which contain `QuartzComponents`. The following code snippet lists all of the valid sections that you can add components to: +Each page is composed of multiple different sections which contain `QuartzComponents`. The following code snippet lists all of the valid sections that you can add components to: ```typescript title="quartz/cfg.ts" export interface FullPageLayout { - head: QuartzComponent - header: QuartzComponent[] - beforeBody: QuartzComponent[] - pageBody: QuartzComponent - left: QuartzComponent[] - right: QuartzComponent[] - footer: QuartzComponent + head: QuartzComponent // single component + header: QuartzComponent[] // laid out horizontally + beforeBody: QuartzComponent[] // laid out vertically + pageBody: QuartzComponent // single component + left: QuartzComponent[] // vertical on desktop, horizontal on mobile + right: QuartzComponent[] // vertical on desktop, horizontal on mobile + footer: QuartzComponent // single component } ``` These correspond to following parts of the page: -### Components +![[quartz-layout.png|800]] -See [a list of all the components](./tags/component) for all available components. +> [!note] +> There are two additional layout fields that are *not* shown in the above diagram. +> 1. `head` is a single component that renders the `` [tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head) in the HTML. This doesn't appear visually on the page and is only is responsible for metadata about the document like the tab title, scripts, and styles. +> 2. `header` is a set of components that are laid out horizontally and appears *before* the `beforeBody` section. This enables you to replicate the old Quartz 3 header bar where the title, search bar, and dark mode toggle. By default, Quartz 4 doesn't place any components in the `header`. + +Quartz **components**, like plugins, can take in additional properties as configuration options. If you're familiar with React terminology, you can think of them as Higher-order Components. + +See [a list of all the components](./tags/component) for all available components along with their configuration options. ### Style +Most meaningful style changes like colour scheme and font can be done simply through the [[#General Configuration|general configuration]] options above. + +However, if you'd like to make more involved style changes, you can do this by writing your own styles. Quartz 4, like Quartz 3, uses [Sass](https://sass-lang.com/guide/) for styling. + +You can see the base style sheet in `quartz/styles/base.scss` and write your own in `quartz/styles/custom.scss`. + +> [!note] +> Some components may provide their own styling as well! For example, `quartz/components/Darkmode.tsx` imports its styles from `quartz/components/styles/darkmode.scss`. If you'd like to customize styling for a specific component, double check the component definition to see how its styles are defined. + +When you're ready, see how [[build|build and preview]] Quartz locally. \ No newline at end of file diff --git a/content/features/popover previews.md b/content/features/popover previews.md index 7bf608e..f882224 100644 --- a/content/features/popover previews.md +++ b/content/features/popover previews.md @@ -2,7 +2,7 @@ title: Popover Previews --- -Like Wikipedia, when you hover over a link in Quartz, there is a popup of a page preview that you can scroll to see the entire content. +Like Wikipedia, when you hover over a link in Quartz, there is a popup of a page preview that you can scroll to see the entire content. Links to headers will also scroll the popup to show that specific header in view. By default, Quartz only fetches previews for pages inside your vault due to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS). It does this by selecting all HTML elements with the `popover-hint` class. For most pages, this includes the page title, page metadata like words and time to read, tags, and the actual page content. diff --git a/content/features/upcoming features.md b/content/features/upcoming features.md index 46390bd..8ab7520 100644 --- a/content/features/upcoming features.md +++ b/content/features/upcoming features.md @@ -7,6 +7,7 @@ draft: true - block links: https://help.obsidian.md/Linking+notes+and+files/Internal+links#Link+to+a+block+in+a+note - note/header/block transcludes: https://help.obsidian.md/Linking+notes+and+files/Embedding+files - static dead link detection +- docker support ## misc diff --git a/content/hosting.md b/content/hosting.md index a704313..f644e4d 100644 --- a/content/hosting.md +++ b/content/hosting.md @@ -2,6 +2,49 @@ title: Hosting --- +Quartz effectively turns your Markdown files and other resources into a bundle of HTML, JS, and CSS files (a website!). + +However, if you'd like to publish your site to the world, you need a way to host it online. This guide will detail how to deploy with either GitHub Pages or Cloudflare pages but any service that allows you to deploy static HTML should work as well (e.g. Netlify, Replit, etc.) ## GitHub Pages +Like Quartz 3, you can deploy the site generated by Quartz 4 via GitHub Pages. + +In your local Quartz, create a new file `quartz/.github/workflows/deploy.yaml`: + +```yaml title="quartz/.github/workflows/deploy.yaml" +name: Deploy to GitHub Pages + +on: + push: + branches: + - v4-alpha + +jobs: + deploy: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Fetch all history for git info + + - uses: actions/setup-node@v3 + with: + node-version: 18.14 + + - name: Install Dependencies + run: npm ci + + - name: Build Quartz + run: npx quartz build + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./public + publish_branch: master # deploying branch + cname: quartz.jzhao.xyz +``` + +Then, the next time you ## Cloudflare Pages diff --git a/content/index.md b/content/index.md index 77f14e1..0659e88 100644 --- a/content/index.md +++ b/content/index.md @@ -18,11 +18,7 @@ npm i npx quartz create ``` -This will guide you through initializing your Quartz with content. - -When you're ready, you can edit `quartz.config.ts` to customize and configure Quartz more. Read the [[configuration]] page for more information on what each field in the configuration does. - -Then, when you're ready, see how to [[build]] and [[hosting|host]] Quartz. +This will guide you through initializing your Quartz with content. Once you've done so, see how to [[build]] and [[hosting|host]] Quartz. > [!info] > Coming from Quartz 3? See the [[migrating from Quartz 3|migration guide]] for the differences between Quartz 3 and Quartz 4 and how to migrate. @@ -30,6 +26,7 @@ Then, when you're ready, see how to [[build]] and [[hosting|host]] Quartz. ## 🔧 Features - [[full-text search|Full-text search]], [[graph view]], [[backlinks]], [[Latex]], [[syntax highlighting]], [[popover previews]], and many more right out of the box +- Hot-reload for both configuration and content - Simple JSX [[creating components|layouts and page components]] - [[SPA Routing|Ridiculously fast page loads]] and tiny bundle sizes - Fully-customizable parsing, filtering, and page generation through [[making plugins|plugins]] diff --git a/content/migrating from Quartz 3.md b/content/migrating from Quartz 3.md index e69de29..c2e4c4e 100644 --- a/content/migrating from Quartz 3.md +++ b/content/migrating from Quartz 3.md @@ -0,0 +1,26 @@ +--- +title: "Migrating from Quartz 3" +--- + +As you already have Quartz locally, you don't need to fork or clone it again. Simply just checkout the alpha branch, install the dependencies, and import your old vault. + +```bash +git checkout v4-alpha +npm i +npx quartz create +``` + +When running `npx quartz create`, you will be prompted as to how to initialize your content folder. Here, you can choose to import or link your previous content folder and Quartz should work just as you expect it to. + +## Key changes + +1. **Removing Hugo and `hugo-obsidian`**: Hugo worked well for earlier versions of Quartz but it also made it hard for people outside of the Golang and Hugo communities to fully understand what Quartz was doing under the hood and be able to properly customize it to their needs. Quartz 4 now uses a Node-based static-site generation process which should lead to a much more helpful error messages and an overall smoother user experience. +2. **Full-hot reload**: The many rough edges of how `hugo-obsidian` integrated with Hugo meant that watch mode didn't re-trigger `hugo-obsidian` to update the content index. This lead to a lot of weird cases where the watch mode output wasn't accurate. Quartz 4 now uses a cohesive parse, filter, and emit pipeline which gets run on every change so hot-reloads are always accurate. +3. **Replacing Go template syntax with JSX**: Quartz 3 used [Go templates](https://pkg.go.dev/text/template) to create layouts for pages. However, the syntax isn't great for doing any sort of complex rendering (like [text processing](https://github.com/jackyzha0/quartz/blob/hugo/layouts/partials/textprocessing.html)) and it got very difficult to make any meaningful layout changes to Quartz 3. Quartz 4 uses an extension of JavaScript syntax called JSX which allows you to write layout code that looks like HTML in JavaScript which is significantly easier to understand and maintain. +4. **A new extensible [[configuration]] and [[configuration#Plugins|plugin]] system**: Quartz 3 was hard to configure without technical knowledge of how Hugo's partials worked. Extensions were even hard to make. Quartz 4's configuration and plugin system is designed to be extended by users while making updating to new versions of Quartz easy. + +## Things to update + +- Some HTML layout may not be the same between Quartz 3 and Quartz 4. If you depended on a particular HTML hierarchy or class names, you may need to update your custom CSS to reflect these changes. +- If you customized the layout of Quartz 3, you may need to translate these changes from Go templates back to JSX as Quartz 4 no longer uses Hugo. For components, check out the guide on [[creating components]] for more details on this. +- You will also need to update your deploy scripts. See the [[hosting]] guide for more details. \ No newline at end of file diff --git a/content/quartz-layout.png b/content/quartz-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..4767b549c2469c65482dde2fc69dfea67c0e781b GIT binary patch literal 63222 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 literal 0 HcmV?d00001 diff --git a/quartz.layout.ts b/quartz.layout.ts index f47b224..1a3f99f 100644 --- a/quartz.layout.ts +++ b/quartz.layout.ts @@ -1,8 +1,8 @@ -import { PageLayout } from "./quartz/cfg" +import { PageLayout, SharedLayout } from "./quartz/cfg" import * as Component from "./quartz/components" // components shared across all pages -export const sharedPageComponents = { +export const sharedPageComponents: SharedLayout = { head: Component.Head(), header: [], footer: Component.Footer({ diff --git a/quartz/cfg.ts b/quartz/cfg.ts index d8a14a3..3c9613b 100644 --- a/quartz/cfg.ts +++ b/quartz/cfg.ts @@ -45,3 +45,4 @@ export interface FullPageLayout { } export type PageLayout = Pick +export type SharedLayout = Pick diff --git a/quartz/path.ts b/quartz/path.ts index 494d3c5..9af5c7b 100644 --- a/quartz/path.ts +++ b/quartz/path.ts @@ -228,7 +228,7 @@ function _isRelativeSegment(s: string): boolean { return /^\.{0,2}$/.test(s) } -function _stripSlashes(s: string): string { +export function _stripSlashes(s: string): string { if (s.startsWith("/")) { s = s.substring(1) } diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts index 0765062..9a9195b 100644 --- a/quartz/plugins/transformers/links.ts +++ b/quartz/plugins/transformers/links.ts @@ -2,6 +2,7 @@ import { QuartzTransformerPlugin } from "../types" import { CanonicalSlug, RelativeURL, + _stripSlashes, canonicalizeServer, joinSegments, pathToRoot, @@ -35,7 +36,7 @@ export const CrawlLinks: QuartzTransformerPlugin | undefined> = return (tree, file) => { const curSlug = canonicalizeServer(file.data.slug!) const transformLink = (target: string): RelativeURL => { - const targetSlug = transformInternalLink(target).slice("./".length) + const targetSlug = _stripSlashes(transformInternalLink(target).slice(".".length)) let [targetCanonical, targetAnchor] = splitAnchor(targetSlug) if (opts.markdownLinkResolution === "relative") { return targetSlug as RelativeURL diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 8d8d457..0904ed1 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -225,7 +225,6 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin } // internal link - // const url = transformInternalLink(fp + anchor) const url = fp + anchor return { type: "link", diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 7291939..6bed7ca 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -81,7 +81,9 @@ a { .page { @media all and (max-width: $fullPageWidth) { - margin: 0 5vw; + margin: 0 auto; + padding: 0 1rem; + max-width: 800px; } & article {