import { compileSass, copy, generateFavicons, generateRouteAssets, generateSitemap, imageToWebP, optimiseSvg, renderTemplate, renderIndex, renderMarkdownToMeta, renderMarkdownWithTemplate, generateTaxonomy, } from "./actions/index.js" export const tasks = [ [ { key: "images", name: "Images", action: imageToWebP, jobConfig: { inputFiles: [{ pattern: "images/content/*.jpg" }], stripPaths: ["images/content/"], outputDir: "images/", outputFileExtension: ".webp", }, actionConfig: { imageSizes: [ "640w", "768w", "1024w", "1366w", "1600w", "1920w", "2560w", ], quality: 80, }, }, { key: "styles", name: "Styles", action: compileSass, jobConfig: { inputFiles: [{ pattern: "styles/**/*.scss", ignore: "**/_*.scss" }], stripPaths: ["styles/"], outputDir: "static/styles/", outputFileExtension: ".css", }, actionConfig: {}, }, { key: "icons", name: "Icons", action: optimiseSvg, jobConfig: { inputFiles: [{ pattern: "images/icons/*.svg" }], stripPaths: ["images/"], outputDir: "static/", outputFileExtension: ".svg", }, actionConfig: {}, }, { key: "static-files", name: "Static Files", action: copy, jobConfig: { inputFiles: [{ pattern: "static/*" }], stripPaths: ["static/"], }, actionConfig: {}, }, { key: "favicons", name: "Favicons", action: generateFavicons, jobConfig: { inputFiles: [{ pattern: "images/favicon/*" }], stripPaths: ["images/favicon/"], outputDir: "static/meta/", }, actionConfig: {}, }, { key: "routes", name: "Routes", action: generateRouteAssets, jobConfig: { inputFiles: [{ pattern: "gpx/**/*.gpx" }], stripPaths: ["gpx/"], outputDir: "routes/", outputFileExtension: ".gpx", }, actionConfig: { imageSizes: [ "640w", "768w", "1024w", "1366w", "1600w", "1920w", "2560w", ], quality: 80, }, }, ], { key: "blog-markdown", name: "Blog Markdown", action: renderMarkdownToMeta, jobConfig: { inputFiles: [{ pattern: "markdown/blog/*.md" }], stripPaths: ["markdown/"], outputFileExtension: ".html", }, actionConfig: {}, }, { key: "markdown", name: "Markdown", action: renderMarkdownToMeta, jobConfig: { inputFiles: [{ pattern: "markdown/*.md" }], stripPaths: ["markdown/"], outputFileExtension: ".html", }, actionConfig: {}, }, [ { key: "author-taxonomy", name: "Author Taxonomy", action: generateTaxonomy, jobConfig: { stateSelectors: ["resources.blog-markdown"], expand: false, skipCache: true, }, actionConfig: { indexOn: "author", orderBy: "date", properties: [ "title", "href", "date", "modified", "author", "tags", "description", ], sortAscending: false, }, }, { key: "tag-taxonomy", name: "Tag Taxonomy", action: generateTaxonomy, jobConfig: { stateSelectors: ["resources.blog-markdown"], expand: false, skipCache: true, }, actionConfig: { indexOn: "tags", orderBy: "date", properties: [ "title", "href", "date", "modified", "author", "tags", "description", ], sortAscending: false, }, }, { key: "blog-latest", name: "Blog Latest", action: generateTaxonomy, jobConfig: { stateSelectors: ["resources.blog-markdown"], expand: false, skipCache: true, }, actionConfig: { orderBy: "date", properties: [ "title", "href", "date", "modified", "author", "tags", "description", ], sortAscending: false, }, }, { key: "includes", name: "Includes", action: renderTemplate, jobConfig: { inputFiles: [{ pattern: "includes/*.hbs" }], stripPaths: ["includes/"], outputFileExtension: ".html", }, actionConfig: {}, }, ], [ { key: "render-pages", name: "Render Pages", action: renderMarkdownWithTemplate, jobConfig: { inputFiles: [{ pattern: "markdown/*.md" }], stripPaths: ["markdown/"], outputFileExtension: ".html", }, actionConfig: { templateDirs: ["templates/", "~/.rhedyn/templates/"], partialDirs: ["partials/", "~/.rhedyn/partials/"], defaultTemplate: "page", }, }, { key: "render-blog-pages", name: "Render Blog Pages", action: renderMarkdownWithTemplate, jobConfig: { inputFiles: [{ pattern: "markdown/blog/*.md" }], stripPaths: ["markdown/"], outputFileExtension: ".html", }, actionConfig: { templateDirs: ["templates/", "~/.rhedyn/templates/"], partialDirs: ["partials/", "~/.rhedyn/partials/"], defaultTemplate: "article", }, }, { key: "render-author-indexes", name: "Render Author Indexes", action: renderIndex, jobConfig: { stateSelectors: ["resources.author-taxonomy.detail"], outputFileExtension: ".html", outputDir: "blog/by-author/", buildFilePath: true, itemsPerPage: 10, }, actionConfig: { writeOut: true, templateDirs: ["templates/", "~/.rhedyn/templates/"], partialDirs: ["partials/", "~/.rhedyn/partials/"], }, }, { key: "render-tag-indexes", name: "Render Tag Indexes", action: renderIndex, jobConfig: { stateSelectors: ["resources.tag-taxonomy.detail"], outputFileExtension: ".html", outputDir: "blog/by-tag/", buildFilePath: true, itemsPerPage: 10, }, actionConfig: { writeOut: true, templateDirs: ["templates/", "~/.rhedyn/templates/"], partialDirs: ["partials/", "~/.rhedyn/partials/"], }, }, { key: "render-blog-home", name: "Render Blog Home", action: renderIndex, jobConfig: { stateSelectors: ["resources.blog-latest.detail"], outputFileExtension: ".html", outputDir: "blog/", expand: false, outputFileName: "index", buildFilePath: true, itemsPerPage: 10, }, actionConfig: { writeOut: true, templateDirs: ["templates/", "~/.rhedyn/templates/"], partialDirs: ["partials/", "~/.rhedyn/partials/"], title: "Blog", }, }, ], { key: "sitemap", name: "Sitemap", action: generateSitemap, jobConfig: { stateSelectors: [ "resources.render-pages", "resources.render-blog-pages", "resources.render-author-indexes", "resources.render-tag-indexes", "resources.render-blog-home", ], expand: false, skipCache: true, }, actionConfig: { outputFileName: "sitemap.xml", }, }, ] export const opts = { outDir: "dist/", runDir: process.cwd(), cacheDir: ".cache", include: { styles: [{ pattern: "~/.rhedyn/styles/*.scss" }], }, clean: true, ignoreExisting: false, logLevel: "info", includeStateValues: true, itemsPerPage: 25, markdown: { allowHtml: false, }, site: { name: "Website generated by Rhedyn", shortName: "Rhedyn test site", description: "A website generated from files using Rhedyn", author: "Craig Fletcher", url: "https://www.leakypixel.net", language: "en-GB", backgroundColor: "#22242c", themeColor: "#f00", }, } const defaults = { opts, tasks, } export default defaults