Skip to content

Commit 6aea7c5

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 ec96b7c commit 6aea7c5

File tree

13 files changed

+40
-15
lines changed

13 files changed

+40
-15
lines changed

.changeset/smooth-waves-accept.md

+9
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

+1-1
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

+5-3
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,11 @@ export default function (options = {}) {
7171
);
7272

7373
builder.log.minor('Copying assets...');
74-
builder.writeClient(bucket);
75-
builder.writeStatic(bucket);
76-
builder.writePrerendered(bucket);
74+
75+
const prefixedBucket = `${bucket}${builder.config.kit.paths.base}`;
76+
builder.writeClient(prefixedBucket);
77+
builder.writeStatic(prefixedBucket);
78+
builder.writePrerendered(prefixedBucket);
7779
}
7880
};
7981
}

packages/adapter-cloudflare/index.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ export default function (options = {}) {
1616
builder.rimraf(tmp);
1717
builder.mkdirp(tmp);
1818

19-
builder.writeStatic(dest);
20-
builder.writeClient(dest);
21-
builder.writePrerendered(dest);
19+
const prefixedDest = `${dest}${builder.config.kit.paths.base}`;
20+
builder.writeStatic(prefixedDest);
21+
builder.writeClient(prefixedDest);
22+
builder.writePrerendered(prefixedDest);
2223

2324
const relativePath = posix.relative(tmp, builder.getServerDirectory());
2425

packages/adapter-cloudflare/src/worker.js

+1-1
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

+6-4
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,18 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) {
6969
}
7070

7171
builder.log.minor('Copying assets...');
72-
builder.writeStatic(publish);
73-
builder.writeClient(publish);
74-
builder.writePrerendered(publish);
72+
73+
const prefixedPublish = `${publish}${builder.config.kit.paths.base}`;
74+
builder.writeStatic(prefixedPublish);
75+
builder.writeClient(prefixedPublish);
76+
builder.writePrerendered(prefixedPublish);
7577

7678
builder.log.minor('Writing custom headers...');
7779
const headers_file = join(publish, '_headers');
7880
builder.copy('_headers', headers_file);
7981
appendFileSync(
8082
headers_file,
81-
`\n\n/${builder.config.kit.appDir}/*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n`
83+
`\n\n${builder.getPrefixedAppDirectory()}*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n`
8284
);
8385
}
8486
};

packages/adapter-vercel/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ async function v1(builder, external) {
177177
...prerendered_pages,
178178
...prerendered_redirects,
179179
{
180-
src: `/${builder.config.kit.appDir}/.+`,
180+
src: `/${builder.getPrefixedAppDirectory()}/.+`,
181181
headers: {
182182
'cache-control': 'public, immutable, max-age=31536000'
183183
}
@@ -227,7 +227,7 @@ async function v3(builder, external, edge, split) {
227227
...redirects[builder.config.kit.trailingSlash],
228228
...prerendered_redirects,
229229
{
230-
src: `/${builder.config.kit.appDir}/.+`,
230+
src: `/${builder.getPrefixedAppDirectory()}/.+`,
231231
headers: {
232232
'cache-control': 'public, immutable, max-age=31536000'
233233
}

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

+4
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ export function create_builder({ config, build_data, prerendered, log }) {
120120
return config.kit.files.assets;
121121
},
122122

123+
getPrefixedAppDirectory() {
124+
return build_data.prefix;
125+
},
126+
123127
writeClient(dest) {
124128
return copy(`${config.kit.outDir}/output/client`, dest);
125129
},

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export async function build(config, { log }) {
2626

2727
const { manifest_data } = sync.all(config);
2828

29+
const assets_prefix = `${config.kit.paths.assets || config.kit.paths.base}/${config.kit.appDir}/`;
2930
const options = {
3031
cwd,
3132
config,
@@ -34,7 +35,7 @@ export async function build(config, { log }) {
3435
// during `svelte-kit preview`, because we use a local asset path. If Vite
3536
// used relative paths, I _think_ this could get fixed. Issue here:
3637
// https://github.com/vitejs/vite/issues/2009
37-
assets_base: `${config.kit.paths.assets || config.kit.paths.base}/${config.kit.appDir}/`,
38+
assets_base: assets_prefix,
3839
manifest_data,
3940
output_dir,
4041
client_entry_file: path.relative(cwd, `${get_runtime_path(config)}/client/start.js`),
@@ -48,6 +49,7 @@ export async function build(config, { log }) {
4849
/** @type {import('types').BuildData} */
4950
const build_data = {
5051
app_dir: config.kit.appDir,
52+
prefix: assets_prefix,
5153
manifest_data: options.manifest_data,
5254
service_worker: options.service_worker_entry_file ? 'service-worker.js' : null, // TODO make file configurable?
5355
client,

packages/kit/src/core/dev/plugin.js

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export async function create_plugin(config, cwd) {
5050

5151
manifest = {
5252
appDir: config.kit.appDir,
53+
prefix: config.kit.appDir,
5354
assets: new Set(manifest_data.assets.map((asset) => asset.file)),
5455
mimeTypes: get_mime_lookup(manifest_data),
5556
_: {

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

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export function generate_manifest({ build_data, relative_path, routes, format =
6363
// prettier-ignore
6464
return `{
6565
appDir: ${s(build_data.app_dir)},
66+
prefix: ${s(build_data.prefix)},
6667
assets: new Set(${s(assets)}),
6768
mimeTypes: ${s(get_mime_lookup(build_data.manifest_data))},
6869
_: {

packages/kit/types/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export interface Builder {
4646
getClientDirectory(): string;
4747
getServerDirectory(): string;
4848
getStaticDirectory(): string;
49+
getPrefixedAppDirectory(): string;
4950

5051
/**
5152
* @param dest the destination folder to which files should be copied
@@ -261,6 +262,7 @@ export class Server {
261262

262263
export interface SSRManifest {
263264
appDir: string;
265+
prefix: string;
264266
assets: Set<string>;
265267
mimeTypes: Record<string, string>;
266268

packages/kit/types/internal.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface Asset {
4343

4444
export interface BuildData {
4545
app_dir: string;
46+
prefix: string;
4647
manifest_data: ManifestData;
4748
service_worker: string | null;
4849
client: {

0 commit comments

Comments
 (0)