defaults.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import {
  2. compileSass,
  3. copy,
  4. generateFavicons,
  5. imageToWebP,
  6. optimiseSvg,
  7. renderMarkdownWithTemplate,
  8. } from "./processors.js"
  9. export const tasks = [
  10. [
  11. {
  12. name: "styles",
  13. inputFiles: [{ pattern: "styles/**/*.scss", ignore: "**/_*.scss" }],
  14. stripPaths: ["styles/"],
  15. outputDir: "static/styles/",
  16. outputFileExtension: ".css",
  17. processor: compileSass,
  18. },
  19. {
  20. name: "icons",
  21. inputFiles: [{ pattern: "images/icons/*.svg" }],
  22. stripPaths: ["images/"],
  23. outputDir: "static/",
  24. outputFileExtension: ".svg",
  25. processor: optimiseSvg,
  26. },
  27. {
  28. name: "images",
  29. inputFiles: [{ pattern: "images/content/*.jpg" }],
  30. stripPaths: ["images/content/"],
  31. outputDir: "images/",
  32. outputFileExtension: ".webp",
  33. imageSizes: [
  34. "640w", "768w", "1024w", "1366w", "1600w", "1920w", "2560w",
  35. ],
  36. quality: 80,
  37. processor: imageToWebP,
  38. },
  39. {
  40. name: "static files",
  41. inputFiles: [{ pattern: "static/*" }],
  42. stripPaths: ["static/"],
  43. processor: copy,
  44. },
  45. {
  46. name: "favicons",
  47. inputFiles: [{ pattern: "images/favicon/*" }],
  48. stripPaths: ["images/favicon/"],
  49. outputDir: "static/meta/",
  50. processor: generateFavicons,
  51. },
  52. ],
  53. {
  54. name: "pages",
  55. inputFiles: [{ pattern: "markdown/*.md" }],
  56. stripPaths: ["markdown/"],
  57. outputFileExtension: ".html",
  58. processor: renderMarkdownWithTemplate,
  59. defaultTemplate: "default",
  60. templateDirs: ["templates/", "~/.rhedyn/templates/"],
  61. },
  62. ]
  63. export const opts = {
  64. outDir: "dist/",
  65. runDir: process.cwd(),
  66. cacheDir: ".cache",
  67. include: {
  68. styles: [{ pattern: "~/.rhedyn/styles/*.scss" }],
  69. },
  70. clean: true,
  71. ignoreExisting: false,
  72. logLevel: "info",
  73. includeStateValues: true,
  74. site: {
  75. name: "Website generated by Rhedyn",
  76. shortName: "Rhedyn test site",
  77. description: "A website generated from files using Rhedyn",
  78. author: "Craig Fletcher",
  79. url: "https://www.leakypixel.net",
  80. language: "en-GB",
  81. backgroundColor: "#22242c",
  82. themeColor: "#f00",
  83. },
  84. }
  85. const defaults = {
  86. opts,
  87. tasks,
  88. }
  89. export default defaults