sveltekit-pluggable-static-adapter

Sveltekit Pluggable Static Adapter

Sveltekit static adapter which has the option for pre/during/post build plugins

@ivorgri/sveltekit-pluggable-static-adapter

Adaption of the standard static adapter from the Sveltekit team. Inspiration for this custom adapter is based on the input in issue #3166 provided by Adam Coster. The goal of the adapter is to allow custom logic to be run at specific hooks inside the build process of the static adapter.

Usage

Install package with npm i -D @ivorgri/sveltekit-pluggable-static-adapter, then add the adapter to your svelte.config.js:

// svelte.config.js
import adapter from '@ivorgri/sveltekit-pluggable-static-adapter';

Hooks

There are three possible hooks:

  • afterCleanupCallback
  • afterPrerenderCallback
  • afterPrecompressCallback

These hooks should be provided with functions that should be run in order by the callback hooks. This should be done in the svelte.config.js file.

In these hooks, the following information from the static adapter is available:

  • builder (can be used for adding logging to build process)
  • pages (folder where the pages are generated)
  • assets (folder where the assets are stored)
// svelte.config.js
export default {
    kit: {
        adapter: adapter({
            // default options provided by regular static adapter
            pages: 'build',
            assets: 'build',
            fallback: null,
            precompress: false,
            afterCleanupCallback: async (builder, pages, assets) => {
                // Add functions here
            },
            afterPrerenderCallback: async (builder, pages, assets) => {
                // Add functions here
            },
            afterPrecompressCallback: async (builder, pages, assets) => {
                // Add functions here
            },
        })
    }
};

Plugin

You can make your own plugin by creating an async function, which does something with the build files (or before they are build). For some examples, see the list of plugins below.

List of plugins

Below you can find a list of plugins that are already out there.

// svelte.config.js

// ...

import convertAssetsToWebp from '@ivorgri/sveltekit-pluggable-static-adapter-webp-plugin';

//...

export default {
    kit: {
        adapter: adapter({
            // ...
            afterPrerenderCallback: async (builder, pages, assets) => {
                await convertAssetsToWebp(builder,assets);
            },
        })
    }
};
// svelte.config.js

// ...

import replaceExternalImages from '@ivorgri/sveltekit-pluggable-static-adapter-external-image-plugin';

//...

export default {
    kit: {
        adapter: adapter({
            // ...
            afterPrerenderCallback: async (builder, pages, assets) => {
                await replaceExternalImages("origin.domain.of.images.com",builder,pages,assets)
            },
        })
    }
};
// svelte.config.js

// ...

import generateSitemap from '@ivorgri/sveltekit-pluggable-static-adapter-sitemap-plugin';

//...

export default {
    kit: {
        adapter: adapter({
            // ...
            afterPrerenderCallback: async (builder, pages, assets) => {
                await generateSitemap("your.site.domain.com",builder,pages)
            },
        })
    }
};

Changelog

The Changelog for this package is available on GitHub.

License

MIT

Top categories

Loading Svelte Themes