forked from jackyzha0/quartz
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
199 changed files
with
10,483 additions
and
4,232 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# To get started with Dependabot version updates, you'll need to specify which | ||
# package ecosystems to update and where the package manifests are located. | ||
# Please see the documentation for all configuration options: | ||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file | ||
|
||
version: 2 | ||
updates: | ||
- package-ecosystem: "npm" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
v20.9.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -53,12 +53,12 @@ All transformer plugins must define at least a `name` field to register the plug | |
Normally for both `remark` and `rehype`, you can find existing plugins that you can use to . If you'd like to create your own `remark` or `rehype` plugin, checkout the [guide to creating a plugin](https://unifiedjs.com/learn/guide/create-a-plugin/) using `unified` (the underlying AST parser and transformer library). | ||
A good example of a transformer plugin that borrows from the `remark` and `rehype` ecosystems is the [[Latex]] plugin: | ||
A good example of a transformer plugin that borrows from the `remark` and `rehype` ecosystems is the [[plugins/Latex|Latex]] plugin: | ||
```ts title="quartz/plugins/transformers/latex.ts" | ||
import remarkMath from "remark-math" | ||
import rehypeKatex from "rehype-katex" | ||
import rehypeMathjax from "rehype-mathjax/svg.js" | ||
import rehypeMathjax from "rehype-mathjax/svg" | ||
import { QuartzTransformerPlugin } from "../types" | ||
|
||
interface Options { | ||
|
@@ -84,10 +84,14 @@ export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => { | |
externalResources() { | ||
if (engine === "katex") { | ||
return { | ||
css: ["https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css"], | ||
css: [ | ||
// base css | ||
"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css", | ||
], | ||
js: [ | ||
{ | ||
src: "https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/copy-tex.min.js", | ||
// fix copy behaviour: https://github.com/KaTeX/KaTeX/blob/main/contrib/copy-tex/README.md | ||
src: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/contrib/copy-tex.min.js", | ||
loadTime: "afterDOMReady", | ||
contentType: "external", | ||
}, | ||
|
@@ -216,22 +220,19 @@ export type QuartzEmitterPlugin<Options extends OptionType = undefined> = ( | |
|
||
export type QuartzEmitterPluginInstance = { | ||
name: string | ||
emit( | ||
ctx: BuildCtx, | ||
content: ProcessedContent[], | ||
resources: StaticResources, | ||
emitCallback: EmitCallback, | ||
): Promise<FilePath[]> | ||
emit(ctx: BuildCtx, content: ProcessedContent[], resources: StaticResources): Promise<FilePath[]> | ||
getQuartzComponents(ctx: BuildCtx): QuartzComponent[] | ||
} | ||
``` | ||
An emitter plugin must define a `name` field an `emit` function and a `getQuartzComponents` function. `emit` is responsible for looking at all the parsed and filtered content and then appropriately creating files and returning a list of paths to files the plugin created. | ||
An emitter plugin must define a `name` field, an `emit` function, and a `getQuartzComponents` function. `emit` is responsible for looking at all the parsed and filtered content and then appropriately creating files and returning a list of paths to files the plugin created. | ||
Creating new files can be done via regular Node [fs module](https://nodejs.org/api/fs.html) (i.e. `fs.cp` or `fs.writeFile`) or via the `emitCallback` if you are creating files that contain text. The `emitCallback` function is the 4th argument of the emit function. It's interface looks something like this: | ||
Creating new files can be done via regular Node [fs module](https://nodejs.org/api/fs.html) (i.e. `fs.cp` or `fs.writeFile`) or via the `write` function in `quartz/plugins/emitters/helpers.ts` if you are creating files that contain text. `write` has the following signature: | ||
```ts | ||
export type EmitCallback = (data: { | ||
export type WriteOptions = (data: { | ||
// the build context | ||
ctx: BuildCtx | ||
// the name of the file to emit (not including the file extension) | ||
slug: ServerSlug | ||
// the file extension | ||
|
@@ -247,7 +248,7 @@ If you are creating an emitter plugin that needs to render components, there are | |
- Your component should use `getQuartzComponents` to declare a list of `QuartzComponents` that it uses to construct the page. See the page on [[creating components]] for more information. | ||
- You can use the `renderPage` function defined in `quartz/components/renderPage.tsx` to render Quartz components into HTML. | ||
- If you need to render an HTML AST to JSX, you can use the `toJsxRuntime` function from `hast-util-to-jsx-runtime` library. An example of this can be found in `quartz/components/pages/Content.tsx`. | ||
- If you need to render an HTML AST to JSX, you can use the `htmlToJsx` function from `quartz/util/jsx.ts`. An example of this can be found in `quartz/components/pages/Content.tsx`. | ||
For example, the following is a simplified version of the content page plugin that renders every single page. | ||
|
@@ -259,11 +260,11 @@ export const ContentPage: QuartzEmitterPlugin = () => { | |
...defaultContentPageLayout, | ||
pageBody: Content(), | ||
} | ||
const { head, header, beforeBody, pageBody, left, right, footer } = layout | ||
const { head, header, beforeBody, pageBody, afterBody, left, right, footer } = layout | ||
return { | ||
name: "ContentPage", | ||
getQuartzComponents() { | ||
return [head, ...header, ...beforeBody, pageBody, ...left, ...right, footer] | ||
return [head, ...header, ...beforeBody, pageBody, ...afterBody, ...left, ...right, footer] | ||
}, | ||
async emit(ctx, content, resources, emit): Promise<FilePath[]> { | ||
const cfg = ctx.cfg.configuration | ||
|
@@ -281,7 +282,7 @@ export const ContentPage: QuartzEmitterPlugin = () => { | |
allFiles, | ||
} | ||
|
||
const content = renderPage(slug, componentData, opts, externalResources) | ||
const content = renderPage(cfg, slug, componentData, opts, externalResources) | ||
const fp = await emit({ | ||
content, | ||
slug: file.data.slug!, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.