defaults.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import {
  2. compileSass,
  3. copy,
  4. generateFavicons,
  5. imageToWebP,
  6. optimiseSvg,
  7. renderTemplate,
  8. renderMarkdownToHtml,
  9. generateTaxonomy,
  10. } from "./processors.js"
  11. export const tasks = [
  12. [
  13. {
  14. name: "images",
  15. inputFiles: [{ pattern: "images/content/*.jpg" }],
  16. stripPaths: ["images/content/"],
  17. outputDir: "images/",
  18. outputFileExtension: ".webp",
  19. imageSizes: [
  20. "640w", "768w", "1024w", "1366w", "1600w", "1920w", "2560w",
  21. ],
  22. quality: 80,
  23. processor: imageToWebP,
  24. },
  25. {
  26. name: "styles",
  27. inputFiles: [{ pattern: "styles/**/*.scss", ignore: "**/_*.scss" }],
  28. stripPaths: ["styles/"],
  29. outputDir: "static/styles/",
  30. outputFileExtension: ".css",
  31. processor: compileSass,
  32. },
  33. {
  34. name: "icons",
  35. inputFiles: [{ pattern: "images/icons/*.svg" }],
  36. stripPaths: ["images/"],
  37. outputDir: "static/",
  38. outputFileExtension: ".svg",
  39. processor: optimiseSvg,
  40. },
  41. {
  42. name: "static files",
  43. inputFiles: [{ pattern: "static/*" }],
  44. stripPaths: ["static/"],
  45. processor: copy,
  46. },
  47. {
  48. name: "favicons",
  49. inputFiles: [{ pattern: "images/favicon/*" }],
  50. stripPaths: ["images/favicon/"],
  51. outputDir: "static/meta/",
  52. processor: generateFavicons,
  53. },
  54. ],
  55. {
  56. name: "markdown",
  57. inputFiles: [{ pattern: "markdown/*.md" }],
  58. stripPaths: ["markdown/"],
  59. outputFileExtension: ".html",
  60. processor: renderMarkdownToHtml,
  61. },
  62. [
  63. {
  64. name: "tag-taxonomy",
  65. stateSelectors: ["resources.markdown"],
  66. processor: generateTaxonomy,
  67. expand: false,
  68. indexOn: "tags",
  69. orderBy: "date",
  70. properties: [
  71. "title", "href", "date", "author",
  72. ],
  73. sortAscending: false,
  74. skipCache: true,
  75. },
  76. {
  77. name: "blog-latest",
  78. stateSelectors: ["resources.markdown"],
  79. processor: generateTaxonomy,
  80. expand: false,
  81. orderBy: "date",
  82. properties: [
  83. "title", "href", "date", "author",
  84. ],
  85. sortAscending: false,
  86. skipCache: true,
  87. },
  88. {
  89. name: "includes",
  90. inputFiles: [{ pattern: "includes/*.hbs" }],
  91. stripPaths: ["includes/"],
  92. outputFileExtension: ".html",
  93. processor: renderTemplate,
  94. },
  95. ],
  96. [
  97. {
  98. name: "render pages",
  99. stateSelectors: ["resources.markdown"],
  100. processor: renderTemplate,
  101. writeOut: true,
  102. templateDirs: ["templates/", "~/.rhedyn/templates/"],
  103. },
  104. {
  105. name: "render indexes",
  106. stateSelectors: ["resources.tag-taxonomy.detail"],
  107. processor: renderTemplate,
  108. writeOut: true,
  109. template: "index",
  110. templateDirs: ["templates/", "~/.rhedyn/templates/"],
  111. outputFileExtension: ".html",
  112. outputDir: "by-tag/",
  113. buildFilePath: true,
  114. },
  115. {
  116. name: "render blog home",
  117. stateSelectors: ["resources.blog-latest.detail"],
  118. processor: renderTemplate,
  119. writeOut: true,
  120. template: "index",
  121. templateDirs: ["templates/", "~/.rhedyn/templates/"],
  122. outputFileExtension: ".html",
  123. outputDir: "blog/",
  124. expand: false,
  125. outputFileName: "index",
  126. title: "Blog",
  127. buildFilePath: true,
  128. },
  129. ],
  130. ]
  131. export const opts = {
  132. outDir: "dist/",
  133. runDir: process.cwd(),
  134. cacheDir: ".cache",
  135. include: {
  136. styles: [{ pattern: "~/.rhedyn/styles/*.scss" }],
  137. },
  138. clean: true,
  139. ignoreExisting: false,
  140. logLevel: "info",
  141. includeStateValues: true,
  142. site: {
  143. name: "Website generated by Rhedyn",
  144. shortName: "Rhedyn test site",
  145. description: "A website generated from files using Rhedyn",
  146. author: "Craig Fletcher",
  147. url: "https://www.leakypixel.net",
  148. language: "en-GB",
  149. backgroundColor: "#22242c",
  150. themeColor: "#f00",
  151. },
  152. }
  153. const defaults = {
  154. opts,
  155. tasks,
  156. }
  157. export default defaults