svelte-kit-sst
Version:
Adapter for SvelteKit apps to work on AWS Lambda and AWS Lambda@Edge.
33 lines (32 loc) • 1.49 kB
JavaScript
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = fileURLToPath(new URL(".", import.meta.url));
export default function () {
const adapter = {
name: "svelte-kit-sst",
async adapt(builder) {
const out = path.join(".svelte-kit", "svelte-kit-sst");
const clientDir = path.join(out, "client");
const serverDir = path.join(out, "server");
const prerenderedDir = path.join(out, "prerendered");
// Cleanup output folder
builder.rimraf(out);
builder.mkdirp(clientDir);
builder.mkdirp(serverDir);
builder.mkdirp(prerenderedDir);
// Create static output
builder.log.minor("Copying assets...");
builder.writeClient(clientDir);
const prerenderedFiles = builder.writePrerendered(prerenderedDir);
// Create Lambda function
builder.log.minor("Generating server function...");
builder.writeServer(serverDir);
// copy over handler files in server handler folder
builder.copy(path.join(__dirname, "handler"), path.join(serverDir, "lambda-handler"));
// save a list of files in server handler folder
fs.writeFileSync(path.join(serverDir, "lambda-handler", "prerendered-file-list.js"), `export default ${JSON.stringify(prerenderedFiles)}`);
},
};
return adapter;
}