mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-02 13:29:30 +08:00
82 lines
1.6 KiB
Text
82 lines
1.6 KiB
Text
import fs from 'fs';
|
|
|
|
/**
|
|
* @typedef {{
|
|
* name: string;
|
|
* test: () => boolean;
|
|
* defaults: (config: any) => import('./index').AdapterOptions; // TODO
|
|
* done: (builder: import('@sveltejs/kit').Builder) => void;
|
|
* }}
|
|
* Platform */
|
|
|
|
/** @param {import('@sveltejs/kit').Builder} builder */
|
|
function vercel_routes(builder) {
|
|
/** @type {any[]} */
|
|
const routes = [
|
|
{
|
|
src: `/${builder.config.kit.appDir}/immutable/.+`,
|
|
headers: {
|
|
'cache-control': 'public, immutable, max-age=31536000'
|
|
}
|
|
}
|
|
];
|
|
|
|
// explicit redirects
|
|
for (const [src, redirect] of builder.prerendered.redirects) {
|
|
routes.push({
|
|
src,
|
|
headers: {
|
|
Location: redirect.location
|
|
},
|
|
status: redirect.status
|
|
});
|
|
}
|
|
|
|
// prerendered pages
|
|
for (const [src, page] of builder.prerendered.pages) {
|
|
routes.push({
|
|
src,
|
|
dest: `${builder.config.kit.appDir}/prerendered/${page.file}`
|
|
});
|
|
}
|
|
|
|
// implicit redirects (trailing slashes)
|
|
for (const [src] of builder.prerendered.pages) {
|
|
if (src !== '/') {
|
|
routes.push({
|
|
src: src.endsWith('/') ? src.slice(0, -1) : src + '/',
|
|
headers: {
|
|
location: src
|
|
},
|
|
status: 308
|
|
});
|
|
}
|
|
}
|
|
|
|
routes.push({
|
|
handle: 'filesystem'
|
|
});
|
|
|
|
return routes;
|
|
}
|
|
|
|
/** @type {Platform[]} */
|
|
export const platforms = [
|
|
{
|
|
name: 'Vercel',
|
|
test: () => !!process.env.VERCEL,
|
|
defaults: (config) => ({
|
|
pages: `.vercel/output/static/${config.kit.appDir}/prerendered`,
|
|
assets: '.vercel/output/static'
|
|
}),
|
|
done: (builder) => {
|
|
fs.writeFileSync(
|
|
'.vercel/output/config.json',
|
|
JSON.stringify({
|
|
version: 3,
|
|
routes: vercel_routes(builder)
|
|
})
|
|
);
|
|
}
|
|
}
|
|
];
|