Build markdown files via quartz and deploy to cloudflare page.
- Use container and volumes to extend quartz.
- Provide default config and layout.
- Layout for my demand:
- Hide breadcrumbs and content metas at homepage.
- Show recent notes only at homepage.
- Remove GraphView
- Explorer only list folders by default.
- Sort documents by created datetime.
- Remove CustomOgImages to speed up build time.
- Modified quartz components
- ContentMeta: Show created time, updated time, word count, reading time.
- Head: Support frontmatter
robots: noneto forbidden SEO robots for folders and documents. Defaults torobot: noimageindex. - Date: Using format YYYY-MM-DD.
- New components
- Metacard: list frontmatters into table.
- Banner: Support frontmatter
banner: urlto add banner to page. - Newline: wrap line in mobile view.
- Modified quartz plugins
- ContentIndex
- auto create robots.txt file based on frontmatter
robot: none. - sitemap.xml do not include files under folder whose frontmatter is
robot: none.
- auto create robots.txt file based on frontmatter
- ContentIndex
- New plugins
- improved-image
- Support reszing image with width and hight.
- Support image caption.
- improved-image
- Change styles.
- Change fontsize, line-heights, colors.
- Set my fav.icon.
Demo: https://talks.adoyle.me/
dockeranddocker compose- wrangler
git clone https://github.com/adoyle-h/quartz-deploy.git
ln -s "$(realpath ./quartz-deploy/quartz-deploy)" /usr/local/bin/User should build image once before using Build and Serve commands.
quartz-deploy build-image
For Chinese users, should use proxy: APT_MIRROR=mirrors.ustc.edu.cn GITHUB_PROXY=https://ghfast.top/ quartz-deploy build-image
Notice: the last "/" is required for GITHUB_PROXY.
- Create
wrangler.tomlfile in your project root. - Create
.quartz/my.tsfile in your project root.
It is required. The "wrangler.toml" file used by wrangler command for cloudflare page.
name = "cloudflare-page-name"
pages_build_output_dir = "./.public" # do not change this line
compatibility_date = "2025-04-21" # set your current dateIt is required. The ".quartz/my.ts" file is used by quartz-deploy for quick configuration.
export const config: Record<string, any> = {
pageTitle: "website title",
baseUrl: "www.your.com",
}
export const layout: Record<string, any> = {
breadcrumbs: {
showCurrentPage: false,
},
footer: {
html: `<p>Copyright</p>`,
links: {},
}
}
export const plugins: Record<string, any> = {}
export const pluginOpts: Record<string, any> = {}See ./quartz/my.ts for example.
It is optional. If you create the file, it will override the default config provided by quartz-deploy.
The content of file refer to official quartz.config.ts.
It is optional. If you create the file, it will override the default layout provided by quartz-deploy.
The content of file refer to official quartz.layout.ts.
quartz-deploy help
quartz-deploy serve <path> and visit http://localhost:8080.
Set PORT to change listening port: PORT=80 quartz-deploy serve
Notice: The public directory not mount to host. Its path is /root/quartz/public in container.
quartz-deploy build <path>
User should install wrangler before using quartz-deploy deploy.
If wrangler.toml existed on your project root, just use quartz-deploy deploy.
Otherwise, use quartz-deploy deploy <path>.
Before opening new Issue/Discussion/PR and posting any comments, please read Contributing Guidelines.
Copyright 2025 ADoyle (adoyle.h@gmail.com) All Rights Reserved. The project is licensed under the Apache License Version 2.0.
See the LICENSE file for the specific language governing permissions and limitations under the License.
See the NOTICE file distributed with this work for additional information regarding copyright ownership.