Skip to content

Commit c52c2db

Browse files
committed
feat: use config.kit.paths.base for static assets
fixes sveltejs#4442, fixes sveltejs#2843 - add manifest.prefix and builder.getAppPrefixDirectory() - adapter-cloudflare*: use manifest.prefix instead of manifest.appDir - adapter-netlify: use prefixed appDir for cache headers - adapter-vercel: use prefixed appDir for routes.json - adapter-cloudflare, adapter-cloudflare-workers, adapter-netlify: write static assets to "$dest/$base"
1 parent 9dbcce9 commit c52c2db

File tree

13 files changed

+34
-10
lines changed

13 files changed

+34
-10
lines changed

.changeset/smooth-waves-accept.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@sveltejs/adapter-cloudflare': patch
3+
'@sveltejs/adapter-cloudflare-workers': patch
4+
'@sveltejs/adapter-netlify': patch
5+
'@sveltejs/adapter-vercel': patch
6+
'@sveltejs/kit': patch
7+
---
8+
9+
Use config.kit.paths.base prefix for static assets

packages/adapter-cloudflare-workers/files/entry.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const static_asset_manifest = JSON.parse(static_asset_manifest_json);
66

77
const server = new Server(manifest);
88

9-
const prefix = `/${manifest.appDir}/`;
9+
const { prefix } = manifest;
1010

1111
export default {
1212
/**

packages/adapter-cloudflare-workers/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ export default function () {
7373
});
7474

7575
builder.log.minor('Copying assets...');
76-
builder.writeClient(site.bucket);
77-
builder.writePrerendered(site.bucket);
76+
const prefixedBucket = `${site.bucket}${builder.config.kit.paths.base}`;
77+
builder.writeClient(prefixedBucket);
78+
builder.writePrerendered(prefixedBucket);
7879
}
7980
};
8081
}

packages/adapter-cloudflare/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ export default function () {
2323
builder.rimraf(tmp);
2424
builder.mkdirp(tmp);
2525

26-
builder.writeClient(dest);
27-
builder.writePrerendered(dest);
26+
const prefixedDest = `${dest}${builder.config.kit.paths.base}`;
27+
builder.writeClient(prefixedDest);
28+
builder.writePrerendered(prefixedDest);
2829

2930
const relativePath = posix.relative(tmp, builder.getServerDirectory());
3031

packages/adapter-cloudflare/src/worker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as Cache from 'worktop/cfw.cache';
44

55
const server = new Server(manifest);
66

7-
const prefix = `/${manifest.appDir}/`;
7+
const { prefix } = manifest;
88

99
/** @type {import('worktop/cfw').Module.Worker<{ ASSETS: import('worktop/cfw.durable').Durable.Object }>} */
1010
const worker = {

packages/adapter-netlify/index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,16 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) {
5454
builder.log.minor(`Publishing to "${publish}"`);
5555

5656
builder.log.minor('Copying assets...');
57-
builder.writeClient(publish);
58-
builder.writePrerendered(publish);
57+
const prefixedPublish = `${publish}${builder.config.kit.paths.base}`;
58+
builder.writeClient(prefixedPublish);
59+
builder.writePrerendered(prefixedPublish);
5960

6061
builder.log.minor('Writing custom headers...');
6162
const headers_file = join(publish, '_headers');
6263
builder.copy('_headers', headers_file);
6364
appendFileSync(
6465
headers_file,
65-
`\n\n/${builder.config.kit.appDir}/immutable/*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n`
66+
`\n\n/${builder.getPrefixedAppDirectory()}/immutable/*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n`
6667
);
6768

6869
if (edge) {

packages/adapter-vercel/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export default function ({ external = [], edge, split } = {}) {
118118
...redirects[builder.config.kit.trailingSlash],
119119
...prerendered_redirects,
120120
{
121-
src: `/${builder.config.kit.appDir}/.+`,
121+
src: `/${builder.getPrefixedAppDirectory()}/.+`,
122122
headers: {
123123
'cache-control': 'public, immutable, max-age=31536000'
124124
}

packages/kit/src/core/adapt/builder.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ export function create_builder({ config, build_data, routes, prerendered, log })
129129
return config.kit.files.assets;
130130
},
131131

132+
getPrefixedAppDirectory() {
133+
return build_data.prefix;
134+
},
135+
132136
writeClient(dest) {
133137
return [...copy(`${config.kit.outDir}/output/client`, dest)];
134138
},

packages/kit/src/core/generate_manifest/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export function generate_manifest({ build_data, relative_path, routes, format =
4444
/** @type {import('types').SSRManifest} */
4545
return `{
4646
appDir: ${s(build_data.app_dir)},
47+
prefix: ${s(build_data.prefix)},
4748
assets: new Set(${s(assets)}),
4849
mimeTypes: ${s(get_mime_lookup(build_data.manifest_data))},
4950
_: {

packages/kit/src/exports/vite/dev/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export async function dev(vite, vite_config, svelte_config) {
5959

6060
manifest = {
6161
appDir: svelte_config.kit.appDir,
62+
prefix: svelte_config.kit.appDir,
6263
assets: new Set(manifest_data.assets.map((asset) => asset.file)),
6364
mimeTypes: get_mime_lookup(manifest_data),
6465
_: {

packages/kit/src/exports/vite/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,8 @@ function kit() {
379379
);
380380

381381
log.info('Building server');
382+
const assets_prefix = `${svelte_config.kit.paths.base}/${svelte_config.kit.appDir}/`;
383+
log.info(`assets_prefix: ${assets_prefix}`);
382384
const options = {
383385
cwd,
384386
config: svelte_config,
@@ -395,6 +397,7 @@ function kit() {
395397
/** @type {import('types').BuildData} */
396398
build_data = {
397399
app_dir: svelte_config.kit.appDir,
400+
prefix: assets_prefix,
398401
manifest_data,
399402
service_worker: options.service_worker_entry_file ? 'service-worker.js' : null, // TODO make file configurable?
400403
client,

packages/kit/types/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export interface Builder {
6767
getClientDirectory(): string;
6868
getServerDirectory(): string;
6969
getStaticDirectory(): string;
70+
getPrefixedAppDirectory(): string;
7071

7172
/**
7273
* @param dest the destination folder to which files should be copied
@@ -323,6 +324,7 @@ export interface ServerInitOptions {
323324

324325
export interface SSRManifest {
325326
appDir: string;
327+
prefix: string;
326328
assets: Set<string>;
327329
mimeTypes: Record<string, string>;
328330

packages/kit/types/internal.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export interface Asset {
4747

4848
export interface BuildData {
4949
app_dir: string;
50+
prefix: string;
5051
manifest_data: ManifestData;
5152
service_worker: string | null;
5253
client: {

0 commit comments

Comments
 (0)