Skip to content

Commit 772dbaf

Browse files
Remove target option (#3674)
* use data-hydrate instead of explicit target * update tests * changeset * update docs * Update packages/kit/src/core/config/options.js Co-authored-by: Simon H <[email protected]> Co-authored-by: Simon H <[email protected]>
1 parent 5935896 commit 772dbaf

File tree

26 files changed

+29
-53
lines changed

26 files changed

+29
-53
lines changed

.changeset/strong-parents-work.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'create-svelte': patch
3+
'@sveltejs/kit': patch
4+
---
5+
6+
Remove target option

documentation/docs/14-configuration.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,10 @@ const config = {
6666
register: true,
6767
files: (filepath) => !/\.DS_STORE/.test(filepath)
6868
},
69-
target: null,
7069
trailingSlash: 'never',
7170
version: {
7271
name: Date.now().toString(),
73-
pollInterval: 0,
72+
pollInterval: 0
7473
},
7574
vite: () => ({})
7675
},
@@ -243,10 +242,6 @@ An object containing zero or more of the following values:
243242
- `register` - if set to `false`, will disable automatic service worker registration
244243
- `files` - a function with the type of `(filepath: string) => boolean`. When `true`, the given file will be available in `$service-worker.files`, otherwise it will be excluded.
245244
246-
### target
247-
248-
Specifies an element to mount the app to. It must be a DOM selector that identifies an element that exists in your template file. If unspecified, the app will be mounted to `document.body`.
249-
250245
### trailingSlash
251246
252247
Whether to remove, append, or ignore trailing slashes when resolving URLs to routes.

packages/adapter-cloudflare-workers/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import adapter from '@sveltejs/adapter-cloudflare-workers';
2424

2525
export default {
2626
kit: {
27-
target: '#svelte',
2827
adapter: adapter()
2928
}
3029
};

packages/adapter-cloudflare/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import adapter from '@sveltejs/adapter-cloudflare';
3232

3333
export default {
3434
kit: {
35-
target: '#svelte',
3635
adapter: adapter()
3736
}
3837
};

packages/adapter-netlify/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ export default {
2323
// if true, will split your app into multiple functions
2424
// instead of creating a single one for the entire app
2525
split: false
26-
}),
27-
target: '#svelte'
26+
})
2827
}
2928
};
3029
```

packages/adapter-static/test/apps/prerendered/src/app.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
%svelte.head%
77
</head>
88
<body>
9-
<div id="svelte">%svelte.body%</div>
9+
<div>%svelte.body%</div>
1010
</body>
1111
</html>

packages/adapter-static/test/apps/prerendered/svelte.config.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import adapter from '../../../index.js';
33
/** @type {import('@sveltejs/kit').Config} */
44
const config = {
55
kit: {
6-
adapter: adapter(),
7-
target: '#svelte'
6+
adapter: adapter()
87
}
98
};
109

packages/adapter-static/test/apps/spa/src/app.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
%svelte.head%
77
</head>
88
<body>
9-
<div id="svelte">%svelte.body%</div>
9+
<div>%svelte.body%</div>
1010
</body>
1111
</html>

packages/adapter-static/test/apps/spa/svelte.config.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ const config = {
55
kit: {
66
adapter: adapter({
77
fallback: '200.html'
8-
}),
9-
target: '#svelte'
8+
})
109
}
1110
};
1211

packages/create-svelte/shared/+default+typescript/svelte.config.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ const config = {
1010
kit: {
1111
adapter: adapter(),
1212

13-
// hydrate the <div id="svelte"> element in src/app.html
14-
target: '#svelte',
15-
1613
// Override http methods in the Todo forms
1714
methodOverride: {
1815
allowed: ['PATCH', 'DELETE']

packages/create-svelte/shared/+default-typescript/svelte.config.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ const config = {
55
kit: {
66
adapter: adapter(),
77

8-
// hydrate the <div id="svelte"> element in src/app.html
9-
target: '#svelte',
10-
118
// Override http methods in the Todo forms
129
methodOverride: {
1310
allowed: ['PATCH', 'DELETE']

packages/create-svelte/shared/+skeleton+typescript/svelte.config.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ const config = {
88
preprocess: preprocess(),
99

1010
kit: {
11-
adapter: adapter(),
12-
13-
// hydrate the <div id="svelte"> element in src/app.html
14-
target: '#svelte'
11+
adapter: adapter()
1512
}
1613
};
1714

packages/create-svelte/shared/+skeleton-typescript/svelte.config.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ import adapter from '@sveltejs/adapter-auto';
33
/** @type {import('@sveltejs/kit').Config} */
44
const config = {
55
kit: {
6-
adapter: adapter(),
7-
8-
// hydrate the <div id="svelte"> element in src/app.html
9-
target: '#svelte'
6+
adapter: adapter()
107
}
118
};
129

packages/create-svelte/templates/default/src/app.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
%svelte.head%
99
</head>
1010
<body>
11-
<div id="svelte">%svelte.body%</div>
11+
<div>%svelte.body%</div>
1212
</body>
1313
</html>

packages/create-svelte/templates/default/svelte.config.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ const config = {
1212
kit: {
1313
adapter: adapter(),
1414

15-
// hydrate the <div id="svelte"> element in src/app.html
16-
target: '#svelte',
17-
1815
// Override http methods in the Todo forms
1916
methodOverride: {
2017
allowed: ['PATCH', 'DELETE']

packages/create-svelte/templates/skeleton/src/app.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
%svelte.head%
99
</head>
1010
<body>
11-
<div id="svelte">%svelte.body%</div>
11+
<div>%svelte.body%</div>
1212
</body>
1313
</html>

packages/create-svelte/templates/skeleton/svelte.config.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ import adapter from '@sveltejs/adapter-auto';
55
/** @type {import('@sveltejs/kit').Config} */
66
const config = {
77
kit: {
8-
adapter: adapter(),
9-
10-
// hydrate the <div id="svelte"> element in src/app.html
11-
target: '#svelte'
8+
adapter: adapter()
129
}
1310
};
1411

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ export class App {
8989
root,
9090
service_worker: ${has_service_worker ? "base + '/service-worker.js'" : 'null'},
9191
router: ${s(config.kit.browser.router)},
92-
target: ${s(config.kit.target)},
9392
template,
9493
template_contains_nonce: ${template.includes('%svelte.nonce%')},
9594
trailing_slash: ${s(config.kit.trailingSlash)}

packages/kit/src/core/config/index.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const get_defaults = (prefix = '') => ({
9595
protocol: undefined,
9696
router: undefined,
9797
ssr: undefined,
98-
target: null,
98+
target: undefined,
9999
trailingSlash: 'never',
100100
version: {
101101
name: Date.now().toString(),
@@ -125,10 +125,10 @@ test('errors on invalid values', () => {
125125
validate_config({
126126
kit: {
127127
// @ts-expect-error - given value expected to throw
128-
target: 42
128+
appDir: 42
129129
}
130130
});
131-
}, /^config\.kit\.target should be a string, if specified$/);
131+
}, /^config\.kit\.appDir should be a string, if specified$/);
132132
});
133133

134134
test('errors on invalid nested values', () => {

packages/kit/src/core/config/options.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,8 @@ const options = object(
251251
`${keypath} has been removed — use the handle hook instead: https://kit.svelte.dev/docs#hooks-handle'`
252252
),
253253

254-
target: string(null),
254+
// TODO remove this for 1.0
255+
target: error((keypath) => `${keypath} is no longer required, and should be removed`),
255256

256257
trailingSlash: list(['never', 'always', 'ignore']),
257258

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ export async function create_plugin(config, cwd) {
262262
read: (file) => fs.readFileSync(path.join(config.kit.files.assets, file)),
263263
root,
264264
router: config.kit.browser.router,
265-
target: config.kit.target,
266265
template: ({ head, body, assets, nonce }) => {
267266
return (
268267
template

packages/kit/src/runtime/server/page/render.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,13 @@ export async function render_response({
152152
needs_nonce: options.template_contains_nonce
153153
});
154154

155+
const target = hash(body);
156+
155157
// prettier-ignore
156158
const init_app = `
157159
import { start } from ${s(options.prefix + options.manifest._.entry.file)};
158160
start({
159-
target: ${options.target ? `document.querySelector(${s(options.target)})` : 'document.body'},
161+
target: document.querySelector('[data-hydrate="${target}"]').parentNode,
160162
paths: ${s(options.paths)},
161163
session: ${try_serialize($session, (error) => {
162164
throw new Error(`Failed to serialize session data: ${error.message}`);
@@ -234,15 +236,15 @@ export async function render_response({
234236
.map((dep) => `\n\t<link rel="modulepreload" href="${options.prefix + dep}">`)
235237
.join('');
236238

237-
const attributes = ['type="module"'];
239+
const attributes = ['type="module"', `data-hydrate="${target}"`];
238240

239241
csp.add_script(init_app);
240242

241243
if (csp.script_needs_nonce) {
242244
attributes.push(`nonce="${csp.nonce}"`);
243245
}
244246

245-
head += `<script ${attributes.join(' ')}>${init_app}</script>`;
247+
body += `\n\t\t<script ${attributes.join(' ')}>${init_app}</script>`;
246248

247249
// prettier-ignore
248250
body += serialized_data
@@ -252,7 +254,7 @@ export async function render_response({
252254

253255
return `<script ${attributes}>${json}</script>`;
254256
})
255-
.join('\n\n\t');
257+
.join('\n\t');
256258
}
257259

258260
if (options.service_worker) {

packages/kit/test/apps/options/source/template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
</head>
88
<body>
99
<h1>I am in the template</h1>
10-
<div id="content-goes-here">%svelte.body%</div>
10+
<div>%svelte.body%</div>
1111
</body>
1212
</html>

packages/kit/test/apps/options/svelte.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const config = {
1919
},
2020
appDir: '_wheee',
2121
floc: true,
22-
target: '#content-goes-here',
2322
inlineStyleThreshold: 1024,
2423
trailingSlash: 'always',
2524
vite: {

packages/kit/types/config.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ export interface Config {
163163
register?: boolean;
164164
files?: (filepath: string) => boolean;
165165
};
166-
target?: string;
167166
trailingSlash?: TrailingSlash;
168167
version?: {
169168
name?: string;

packages/kit/types/internal.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ export interface SSROptions {
140140
root: SSRComponent['default'];
141141
router: boolean;
142142
service_worker?: string;
143-
target: string;
144143
template({
145144
head,
146145
body,

0 commit comments

Comments
 (0)