264 lines
No EOL
8.7 KiB
Text
264 lines
No EOL
8.7 KiB
Text
# Page Configuration Template
|
|
# Copy this file to pages/<page-name>/config.toml and customize
|
|
|
|
[page]
|
|
name = "{{PAGE_NAME}}"
|
|
title = "{{PAGE_TITLE}}"
|
|
type = "{{PAGE_TYPE}}" # single, landing, article, poster
|
|
description = "{{PAGE_DESCRIPTION}}"
|
|
|
|
[directories]
|
|
# Page-specific directories (relative to page root)
|
|
src_dir = "src"
|
|
dist_dir = "dist"
|
|
css_src = "src/assets/css"
|
|
css_dist = "dist/assets/css"
|
|
svg_src = "src/assets/svg"
|
|
svg_dist = "dist/assets/svg"
|
|
js_src = "src/assets/js" # Optional: JavaScript source directory
|
|
js_dist = "dist/assets/js" # Optional: JavaScript output directory
|
|
|
|
[shared]
|
|
# Shared assets to include (from shared/ directory)
|
|
css_modules = [
|
|
"@shared/base/reset.css",
|
|
"@shared/base/typography.css",
|
|
"@shared/utilities/colors.css",
|
|
"@shared/components/animated-text.css"
|
|
]
|
|
|
|
svg_sprites = [
|
|
"@shared/common/symbols.svg"
|
|
]
|
|
|
|
[local]
|
|
# Page-specific CSS modules (from page css_src)
|
|
css_modules = [
|
|
"main.css"
|
|
]
|
|
|
|
# Page-specific JavaScript modules (from page js_src) - Optional
|
|
js_modules = [
|
|
# "main.js",
|
|
# "utils.js"
|
|
]
|
|
|
|
# CSS optimization
|
|
critical_modules = 2 # Number of modules to inline as critical CSS
|
|
minify = true
|
|
remove_comments = true
|
|
|
|
# JavaScript optimization (optional)
|
|
minify_js = true
|
|
remove_js_comments = true
|
|
|
|
[output]
|
|
# Output file names
|
|
css_output = "main.min.css"
|
|
html_output = "index.html"
|
|
svg_sprites = "sprites.svg"
|
|
js_output = "main.min.js" # Optional: JavaScript output file
|
|
|
|
[svg]
|
|
# SVG optimization
|
|
optimize = true
|
|
precision = 2
|
|
|
|
[html]
|
|
# HTML optimization
|
|
minify = true
|
|
remove_comments = true
|
|
remove_whitespace = true
|
|
|
|
[development]
|
|
# Development server settings
|
|
port = 8080
|
|
host = "localhost"
|
|
|
|
[thresholds]
|
|
# File size thresholds (bytes)
|
|
inline_css_max_size = 10240 # 10KB
|
|
inline_svg_max_size = 5120 # 5KB
|
|
max_total_size = 102400 # 100KB
|
|
|
|
[compression]
|
|
# Compression settings
|
|
enable_gzip = true
|
|
gzip_ratio = 0.3
|
|
|
|
[build]
|
|
# Build optimization
|
|
parallel_builds = true
|
|
cache_bust = true
|
|
verbose = true
|
|
|
|
[tools]
|
|
# External minification tools (optional)
|
|
js_minifier = "swc" # Options: swc (default), terser, uglifyjs, esbuild, or path to custom tool
|
|
js_minifier_path = "" # Optional: explicit path (e.g., "/usr/local/bin/swc")
|
|
js_minifier_args = ["--minify", "--target", "es2018"] # SWC default args for modern JS
|
|
css_minifier = "" # Future: external CSS minifier
|
|
html_minifier = "" # Future: external HTML minifier
|
|
|
|
# Example configurations for other tools:
|
|
# js_minifier = "terser"
|
|
# js_minifier_args = ["--compress", "drop_console=true", "--mangle", "--toplevel"]
|
|
#
|
|
# js_minifier = "esbuild"
|
|
# js_minifier_args = ["--minify", "--target=es2018"]
|
|
#
|
|
# js_minifier = "" # Use built-in minifier (fallback)
|
|
|
|
[wasm]
|
|
# WebAssembly compilation settings
|
|
enabled = false # Enable WASM compilation
|
|
source_dir = "src/wasm" # WASM source directory
|
|
output_dir = "dist/wasm" # WASM output directory
|
|
|
|
# WASM modules to compile
|
|
modules = [
|
|
# { name = "compute", source = "compute/src/lib.rs", lang = "rust" },
|
|
# { name = "graphics", source = "graphics/main.c", lang = "c" },
|
|
# { name = "utils", source = "utils/index.ts", lang = "assemblyscript" }
|
|
]
|
|
|
|
[wasm.rust]
|
|
# Rust-specific WASM settings
|
|
toolchain = "wasm-pack" # Options: wasm-pack, cargo
|
|
target = "web" # Options: web, nodejs, bundler
|
|
optimization = "release" # Options: dev, release
|
|
features = [] # Cargo features to enable
|
|
scope = "" # npm scope for wasm-pack
|
|
|
|
[wasm.c]
|
|
# C/C++ specific settings (using Emscripten)
|
|
optimization = "O3" # Optimization level: O0, O1, O2, O3
|
|
exports = ["main"] # Functions to export
|
|
extra_args = [] # Additional emcc arguments
|
|
|
|
[wasm.assemblyscript]
|
|
# AssemblyScript specific settings
|
|
optimize = true # Enable optimization
|
|
debug = false # Include debug information
|
|
runtime = "stub" # Runtime variant: full, half, stub
|
|
|
|
[wasm.go]
|
|
# Go specific settings
|
|
build_tags = [] # Build tags
|
|
extra_args = [] # Additional go build arguments
|
|
|
|
[wasm.optimization]
|
|
# WASM optimization settings (requires wasm-opt)
|
|
use_wasm_opt = true # Use wasm-opt for optimization
|
|
opt_level = 3 # Optimization level (0-4)
|
|
shrink_level = 2 # Shrink level (0-2)
|
|
enable_simd = true # Enable SIMD instructions
|
|
enable_threads = false # Enable threading support
|
|
|
|
[wasm.loader]
|
|
# JavaScript loader generation
|
|
auto_load = true # Automatically load modules on page load
|
|
loader_name = "wasm-loader.js" # Loader filename
|
|
streaming = true # Use WebAssembly.instantiateStreaming when available
|
|
fallback = true # Include fallback for older browsers
|
|
|
|
[highlight]
|
|
# Syntax highlighting with highlight.js
|
|
enabled = "auto" # auto (detect code blocks), true (always), false (never)
|
|
auto_detect = true # Automatically scan HTML for code blocks
|
|
languages = [ # Programming languages to support (auto-detected if empty)
|
|
"javascript", "typescript", "rust", "python", "bash", "json", "html", "css", "toml", "yaml"
|
|
]
|
|
theme = "github-dark" # Highlight.js theme: github-dark, monokai, dracula, tomorrow-night, etc.
|
|
line_numbers = false # Enable line numbers for code blocks
|
|
copy_button = true # Add copy-to-clipboard button
|
|
cdn = false # Use CDN (true) or bundle locally (false) for better performance
|
|
cdn_url = "https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/" # CDN base URL
|
|
|
|
# Available themes: github-dark, github, monokai, dracula, tomorrow-night,
|
|
# tomorrow-night-blue, vs2015, atom-one-dark, atom-one-light, gruvbox-dark, etc.
|
|
# Full list: https://highlightjs.org/static/demo/
|
|
|
|
[highlight.languages]
|
|
# Language aliases (automatically mapped)
|
|
js = "javascript"
|
|
ts = "typescript"
|
|
py = "python"
|
|
sh = "bash"
|
|
shell = "bash"
|
|
yml = "yaml"
|
|
|
|
[markdown]
|
|
# Markdown processing with frontmatter support
|
|
enabled = true # Enable Markdown processing for .md files
|
|
processor = "pulldown-cmark" # Options: pulldown-cmark (default), comrak, pandoc, marked, markdown-it
|
|
fallback_processor = "comrak" # Fallback if primary processor fails
|
|
auto_detect = true # Automatically detect .md files in src directory
|
|
|
|
# Frontmatter parsing
|
|
frontmatter_format = "yaml" # Options: yaml (default), toml, json
|
|
frontmatter_delimiter = "---" # Delimiter for YAML frontmatter
|
|
require_frontmatter = false # Require frontmatter in all .md files
|
|
|
|
# HTML template system
|
|
template_dir = "src/templates" # Directory for HTML templates
|
|
default_template = "article.html" # Default template for Markdown content
|
|
template_engine = "tera" # Template engine: tera (default), handlebars, liquid
|
|
|
|
# Content processing
|
|
smart_punctuation = true # Convert quotes, dashes, ellipses
|
|
table_support = true # Enable table parsing
|
|
footnote_support = true # Enable footnote extensions
|
|
math_support = false # Enable math rendering (requires KaTeX/MathJax)
|
|
syntax_highlighting = true # Use highlight.js for code blocks in Markdown
|
|
|
|
# SEO and metadata
|
|
auto_generate_toc = false # Generate table of contents
|
|
extract_description = true # Extract description from content if not in frontmatter
|
|
reading_time = true # Calculate estimated reading time
|
|
|
|
[markdown.rust]
|
|
# Rust processor specific settings (pulldown-cmark, comrak)
|
|
extensions = ["tables", "footnotes", "strikethrough", "tasklists", "smart-punctuation"]
|
|
unsafe_html = false # Allow raw HTML in Markdown
|
|
github_pre_lang = true # Use GitHub-style language tags in code blocks
|
|
|
|
[markdown.pandoc]
|
|
# Pandoc processor settings (if available)
|
|
format = "gfm" # Input format: gfm, commonmark, markdown
|
|
extensions = ["+pipe_tables", "+footnotes", "+strikeout", "+task_lists"]
|
|
extra_args = ["--smart"] # Additional pandoc arguments
|
|
|
|
[markdown.nodejs]
|
|
# Node.js processor settings (marked, markdown-it)
|
|
breaks = false # Convert line breaks to <br>
|
|
typographer = true # Enable smart quotes and other typographic replacements
|
|
linkify = true # Auto-convert URLs to links
|
|
|
|
[email]
|
|
# Email generation settings
|
|
enabled = false # Enable email-optimized HTML generation
|
|
inline_css = true # Inline all CSS for email compatibility
|
|
max_width = 600 # Maximum email width in pixels
|
|
fallback_fonts = ["Arial", "sans-serif"] # Fallback font stack
|
|
remove_unsupported = true # Remove unsupported CSS properties
|
|
|
|
# Email-specific optimizations
|
|
table_layout = true # Use table-based layout for better compatibility
|
|
absolute_urls = true # Convert relative URLs to absolute
|
|
compress_images = true # Optimize images for email
|
|
strip_js = true # Remove all JavaScript
|
|
|
|
[email.compatibility]
|
|
# Email client compatibility settings
|
|
outlook = true # Optimize for Microsoft Outlook
|
|
gmail = true # Optimize for Gmail
|
|
apple_mail = true # Optimize for Apple Mail
|
|
webmail = true # Optimize for web-based clients
|
|
mobile = true # Optimize for mobile email clients
|
|
|
|
[email.output]
|
|
# Email output settings
|
|
html_output = "email.html" # Email-optimized HTML file
|
|
text_output = "email.txt" # Plain text version (optional)
|
|
preview_output = "email-preview.html" # Preview with email client simulation |