Configuration

Each project built with Gustwind needs minimal plugin configuration.

plugins.json

{
  "env": {
    "DEMO": "This value is available for plugin paths through ${DEMO} syntax.",
    "PLUGINS_PATH": "./plugins"
  },
  "plugins": [
    {
      "path": "./routers/config-router/mod.ts",
      "options": {
        "dataSourcesPath": "./site/dataSources.ts",
        "routesPath": "./site/routes.json",
        "emitAllRoutes": true
      }
    },
    {
      "path": "${PLUGINS_PATH}/meta/mod.ts",
      "options": {
        "inputPath": "./site/meta.json"
      }
    },
    {
      "path": "./renderers/htmlisp-renderer/mod.ts",
      "options": {
        "components": [
          { "path": "./site/components" },
          { "path": "./site/layouts" }
        ],
        "globalUtilitiesPath": "./site/globalUtilities.ts"
      }
    },
    {
      "path": "./plugins/copy/mod.ts",
      "options": {
        "inputPath": "./assets",
        "outputPath": "./assets"
      }
    },
    {
      "path": "./plugins/pagefind/mod.ts",
      "options": {}
    },
    {
      "path": "./plugins/script/mod.ts",
      "options": {
        "scriptsPath": ["./site/scripts"],
        "scripts": [
          {
            "type": "",
            "src": "https://cdn.jsdelivr.net/npm/sidewind@7.6.0/dist/sidewind.umd.production.min.js"
          }
        ]
      }
    },
    {
      "path": "./plugins/twind/mod.ts",
      "options": { "setupPath": "./site/twindSetup.ts" }
    },
    {
      "path": "./plugins/sitemap/mod.ts"
    },
    {
      "path": "./plugins/stats/mod.ts"
    }
  ]
}

Most of the work happens at page level so make sure to check the concepts page to understand how they go together.