defaults.js 2.5 KB

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