diff --git a/README.md b/README.md index f3a1e3d..fd183aa 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ ## Usage -Install with `npm i -D sveltekit-adapter-browser-extension`, then add the adapter to your `svelte.config.js`, and set the appDir to something without an underscore: +Install with `npm i -D sveltekit-adapter-browser-extension`, then add the adapter to your `svelte.config.js`. + +Some additional configuration is required for this adapter to work - you need to (1) set ``appDir`` to something without an underscore and (2) tell kit to prerender its pages by default: ```js // svelte.config.js @@ -13,7 +15,10 @@ import adapter from 'sveltekit-adapter-browser-extension'; export default { kit: { adapter: adapter(), - appDir: 'ext' // This is important - chrome extensions can't handle the default _app directory name. + appDir: 'ext', // This is important - chrome extensions can't handle the default _app directory name. + prerender: { + default: true + } } }; ``` diff --git a/adapter-browser-extension.mjs b/adapter-browser-extension.mjs index 74fe113..b24a007 100644 --- a/adapter-browser-extension.mjs +++ b/adapter-browser-extension.mjs @@ -42,25 +42,29 @@ function load_manifest () { return {} } + /** @type {import('.')} */ export default function ({ pages = 'build', assets = pages, fallback } = {}) { return { name: 'sveltekit-adapter-browser-extension', - async adapt({ utils }) { + async adapt(builder) { + if (!fallback && !builder.config.kit.prerender.default) { + builder.log.warn( + 'You should set `config.kit.prerender.default` to `true` if no fallback is specified' + ); + } + + const provided_manifest = load_manifest() - utils.rimraf(assets) - utils.rimraf(pages) + builder.rimraf(assets) + builder.rimraf(pages) - utils.copy_static_files(assets) - utils.copy_client_files(assets) + builder.writeStatic(assets) + builder.writeClient(assets) - await utils.prerender({ - fallback, - all: !fallback, - dest: pages - }) + builder.writePrerendered(pages, { fallback }); const index_page = join(assets, 'index.html') const index = readFileSync(index_page) @@ -69,7 +73,7 @@ export default function ({ pages = 'build', assets = pages, fallback } = {}) { const merged_manifest = applyToDefaults(generated_manifest, provided_manifest, { nullOverride: true }) writeFileSync(join(assets, manifest_filename), JSON.stringify(merged_manifest)) - utils.rimraf(join(assets, '_app')) + builder.rimraf(join(assets, '_app')) } } -} \ No newline at end of file +}