Skip to content

Commit ae5c4b1

Browse files
committed
[breaking] do a single bundling with Vite removing esbuild
1 parent 53b3ed3 commit ae5c4b1

File tree

18 files changed

+82
-91
lines changed

18 files changed

+82
-91
lines changed

.changeset/tidy-pets-tan.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@sveltejs/adapter-cloudflare-workers': patch
3+
'@sveltejs/adapter-netlify': patch
4+
'@sveltejs/adapter-node': patch
5+
'@sveltejs/adapter-vercel': patch
6+
'@sveltejs/kit': patch
7+
---
8+
9+
[breaking] do a single bundling with Vite removing esbuild

examples/hn.svelte.dev/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
},
1111
"devDependencies": {
1212
"@sveltejs/adapter-netlify": "workspace:*",
13+
"@sveltejs/adapter-node": "workspace:*",
1314
"@sveltejs/kit": "workspace:*",
1415
"svelte": "^3.43.1"
1516
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import netlify from '@sveltejs/adapter-netlify';
2-
31
export default {
42
kit: {
5-
adapter: netlify(),
3+
adapter: '@sveltejs/adapter-node',
64
target: '#svelte'
75
}
86
};

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// TODO hardcoding the relative location makes this brittle
2-
import { init, render } from '../output/server/app.js';
1+
// @sveltejs/kit-app doesn't exist until the app is built
2+
// @ts-ignore
3+
import { init, render } from '@sveltejs/kit-app';
34
import { getAssetFromKV, NotFoundError } from '@cloudflare/kv-asset-handler';
45

56
init();

packages/adapter-netlify/files/entry.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
// TODO hardcoding the relative location makes this brittle
2-
import { init, render } from '../output/server/app.js';
1+
// @sveltejs/kit-app doesn't exist until the app is built
2+
// @ts-ignore
3+
import { init, render } from '@sveltejs/kit-app';
34

45
init();
56

packages/adapter-node/package.json

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,7 @@
88
},
99
"homepage": "https://kit.svelte.dev",
1010
"type": "module",
11-
"exports": {
12-
".": {
13-
"import": "./index.js"
14-
},
15-
"./package.json": "./package.json"
16-
},
17-
"main": "index.js",
18-
"types": "index.d.ts",
19-
"files": [
20-
"files",
21-
"index.d.ts"
22-
],
11+
"main": "files/index.js",
2312
"scripts": {
2413
"dev": "rollup -cw",
2514
"build": "rollup -c",

packages/adapter-node/rollup.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default [
1111
sourcemap: true
1212
},
1313
plugins: [nodeResolve(), commonjs(), json()],
14-
external: ['../output/server/app.js', ...require('module').builtinModules]
14+
external: ['@sveltejs/kit-app', ...require('module').builtinModules]
1515
},
1616
{
1717
input: 'src/index.js',
@@ -21,7 +21,7 @@ export default [
2121
sourcemap: true
2222
},
2323
plugins: [nodeResolve(), commonjs(), json()],
24-
external: ['./middlewares.js', './env.js', ...require('module').builtinModules]
24+
external: ['./middlewares.js', '@sveltejs/kit-app', ...require('module').builtinModules]
2525
},
2626
{
2727
input: 'src/shims.js',

packages/adapter-node/src/env.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const path = process.env['PATH'] || false;
2+
export const host = process.env['HOST'] || '0.0.0.0';
3+
export const port = process.env['PORT'] || (!path && 3000);

packages/adapter-node/src/index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// @ts-ignore
2-
import { path, host, port } from './env.js';
3-
import { assetsMiddleware, kitMiddleware, prerenderedMiddleware } from './middlewares.js';
1+
import { path, host, port } from './env';
2+
import { assetsMiddleware, kitMiddleware, prerenderedMiddleware } from './middlewares';
43
import compression from 'compression';
54
import polka from 'polka';
65

packages/adapter-node/src/middlewares.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
// TODO hardcoding the relative location makes this brittle
2-
// Also, we need most of the logic in another file for testing because
3-
// ../output/server/app.js doesn't exist when we run the tests
1+
// @sveltejs/kit-app doesn't exist until the app is built
42
// @ts-ignore
5-
import { init, render } from '../output/server/app.js';
3+
import { init, render } from '@sveltejs/kit-app';
64
import { create_kit_middleware } from './kit-middleware.js';
75

86
import fs from 'fs';

packages/adapter-vercel/files/entry.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
// @sveltejs/kit-app doesn't exist until the app is built
2+
// @ts-ignore
3+
import { init, render } from '@sveltejs/kit-app';
14
import { getRawBody } from '@sveltejs/kit/node';
25

3-
// TODO hardcoding the relative location makes this brittle
4-
import { init, render } from '../output/server/app.js';
5-
66
init();
77

88
export default async (req, res) => {

packages/kit/src/cli.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -118,32 +118,29 @@ prog
118118
.command('build')
119119
.describe('Create a production build of your app')
120120
.option('--verbose', 'Log more stuff', false)
121-
.action(async ({ verbose }) => {
121+
.action(async () => {
122122
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
123123
const config = await get_config();
124124

125125
try {
126126
const { build } = await import('./core/build/index.js');
127-
const build_data = await build(config);
127+
await build(config);
128128

129129
console.log(
130130
`\nRun ${colors.bold().cyan('npm run preview')} to preview your production build locally.`
131131
);
132132

133-
if (config.kit.adapter) {
134-
const { adapt } = await import('./core/adapt/index.js');
135-
await adapt(config, build_data, { verbose });
133+
if (!config.kit.adapter) {
134+
console.log(colors.bold().yellow('\nNo adapter specified'));
136135

137-
// this is necessary to close any open db connections, etc
138-
process.exit(0);
136+
// prettier-ignore
137+
console.log(
138+
`See ${colors.bold().cyan('https://kit.svelte.dev/docs#adapters')} to learn how to configure your app to run on the platform of your choosing`
139+
);
139140
}
140141

141-
console.log(colors.bold().yellow('\nNo adapter specified'));
142-
143-
// prettier-ignore
144-
console.log(
145-
`See ${colors.bold().cyan('https://kit.svelte.dev/docs#adapters')} to learn how to configure your app to run on the platform of your choosing`
146-
);
142+
// this is necessary to close any open db connections, etc
143+
process.exit(0);
147144
} catch (error) {
148145
handle_error(error);
149146
}

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
import fs from 'fs';
22
import path from 'path';
3-
43
import { svelte } from '@sveltejs/vite-plugin-svelte';
54
import glob from 'tiny-glob/sync.js';
65
import vite from 'vite';
76

87
import { rimraf } from '../../utils/filesystem.js';
98
import { deep_merge } from '../../utils/object.js';
10-
119
import { print_config_conflicts } from '../config/index.js';
1210
import { create_app } from '../create_app/index.js';
1311
import create_manifest_data from '../create_manifest_data/index.js';
1412
import { SVELTE_KIT } from '../constants.js';
1513
import { copy_assets, posixify, resolve_entry } from '../utils.js';
14+
import { createRequire } from 'module';
1615

1716
/** @param {any} value */
1817
const s = (value) => JSON.stringify(value);
1918

20-
/** @typedef {Record<string, {
19+
/**
20+
* @typedef {Record<string, {
2121
* file: string;
2222
* css: string[];
2323
* imports: string[];
24-
* }>} ClientManifest */
24+
* }>} ClientManifest
25+
*/
2526

2627
/**
2728
* @param {import('types/config').ValidatedConfig} config
@@ -32,7 +33,8 @@ const s = (value) => JSON.stringify(value);
3233
* @returns {Promise<import('types/internal').BuildData>}
3334
*/
3435
export async function build(config, { cwd = process.cwd(), runtime = '@sveltejs/kit/ssr' } = {}) {
35-
const build_dir = path.resolve(cwd, `${SVELTE_KIT}/build`);
36+
const raw_build_dir = `${SVELTE_KIT}/node_modules/@sveltejs/kit-app`;
37+
const build_dir = path.resolve(cwd, raw_build_dir);
3638

3739
rimraf(build_dir);
3840

@@ -53,7 +55,7 @@ export async function build(config, { cwd = process.cwd(), runtime = '@sveltejs/
5355
cwd
5456
}),
5557
output_dir,
56-
client_entry_file: `${SVELTE_KIT}/build/runtime/internal/start.js`,
58+
client_entry_file: `${raw_build_dir}/runtime/internal/start.js`,
5759
service_worker_entry_file: resolve_entry(config.kit.files.serviceWorker)
5860
};
5961

@@ -225,12 +227,10 @@ async function build_server(
225227
) {
226228
let hooks_file = resolve_entry(config.kit.files.hooks);
227229
if (!hooks_file || !fs.existsSync(hooks_file)) {
228-
hooks_file = path.resolve(cwd, `${SVELTE_KIT}/build/hooks.js`);
230+
hooks_file = path.resolve(build_dir, 'hooks.js');
229231
fs.writeFileSync(hooks_file, '');
230232
}
231233

232-
const app_file = `${build_dir}/app.js`;
233-
234234
/** @type {(file: string) => string} */
235235
const app_relative = (file) => {
236236
const relative_file = path.relative(build_dir, path.resolve(cwd, file));
@@ -293,6 +293,14 @@ async function build_server(
293293

294294
find_deps(client_entry_file, entry_js, entry_css);
295295

296+
const adapter = config.kit.adapter;
297+
const require = createRequire(import.meta.url);
298+
const pkg_path = require.resolve(`${adapter}/package.json`);
299+
const pkg = JSON.parse(fs.readFileSync(pkg_path, 'utf8'));
300+
const main = path.resolve(pkg_path.substring(0, pkg_path.lastIndexOf('/')), pkg.main);
301+
302+
const app_file = `${build_dir}/app.js`;
303+
296304
// prettier-ignore
297305
fs.writeFileSync(
298306
app_file,
@@ -466,7 +474,7 @@ async function build_server(
466474
polyfillDynamicImport: false,
467475
rollupOptions: {
468476
input: {
469-
app: app_file
477+
app: main
470478
},
471479
output: {
472480
format: 'esm',
@@ -488,6 +496,7 @@ async function build_server(
488496
],
489497
resolve: {
490498
alias: {
499+
'@sveltejs/kit-app': path.resolve(`${build_dir}/app.js`),
491500
$app: path.resolve(`${build_dir}/runtime/app`),
492501
$lib: config.kit.files.lib
493502
}

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@ const options = object(
2323
}),
2424

2525
kit: object({
26-
adapter: validate(null, (input, keypath) => {
27-
if (typeof input !== 'object' || !input.adapt) {
28-
let message = `${keypath} should be an object with an "adapt" method`;
26+
adapter: validate(null, (input, _keypath) => {
27+
// if (typeof input !== 'object' || !input.adapt) {
28+
// let message = `${keypath} should be an object with an "adapt" method`;
2929

30-
if (Array.isArray(input) || typeof input === 'string') {
31-
// for the early adapter adopters
32-
message += ', rather than the name of an adapter';
33-
}
30+
// if (Array.isArray(input) || typeof input === 'string') {
31+
// // for the early adapter adopters
32+
// message += ', rather than the name of an adapter';
33+
// }
3434

35-
throw new Error(`${message}. See https://kit.svelte.dev/docs#adapters`);
36-
}
35+
// throw new Error(`${message}. See https://kit.svelte.dev/docs#adapters`);
36+
// }
3737

3838
return input;
3939
}),

packages/kit/src/runtime/app/navigation.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import { router as router_ } from '../client/singletons.js';
21
import { get_base_uri } from '../client/utils.js';
32

4-
const router = /** @type {import('../client/router').Router} */ (router_);
5-
63
/**
74
* @param {string} name
85
*/
@@ -17,32 +14,39 @@ export const invalidate = import.meta.env.SSR ? guard('invalidate') : invalidate
1714
export const prefetch = import.meta.env.SSR ? guard('prefetch') : prefetch_;
1815
export const prefetchRoutes = import.meta.env.SSR ? guard('prefetchRoutes') : prefetchRoutes_;
1916

17+
async function get_router() {
18+
return /** @type {import('../client/router').Router} */ (
19+
(await import('../client/singletons.js')).router
20+
);
21+
}
22+
2023
/**
2124
* @type {import('$app/navigation').goto}
2225
*/
2326
async function goto_(href, opts) {
24-
return router.goto(href, opts, []);
27+
return (await get_router()).goto(href, opts, []);
2528
}
2629

2730
/**
2831
* @type {import('$app/navigation').invalidate}
2932
*/
3033
async function invalidate_(resource) {
3134
const { href } = new URL(resource, location.href);
32-
return router.renderer.invalidate(href);
35+
return (await get_router()).renderer.invalidate(href);
3336
}
3437

3538
/**
3639
* @type {import('$app/navigation').prefetch}
3740
*/
38-
function prefetch_(href) {
39-
return router.prefetch(new URL(href, get_base_uri(document)));
41+
async function prefetch_(href) {
42+
return (await get_router()).prefetch(new URL(href, get_base_uri(document)));
4043
}
4144

4245
/**
4346
* @type {import('$app/navigation').prefetchRoutes}
4447
*/
4548
async function prefetchRoutes_(pathnames) {
49+
const router = await get_router();
4650
const matching = pathnames
4751
? router.routes.filter((route) => pathnames.some((pathname) => route[0].test(pathname)))
4852
: router.routes;

packages/kit/test/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ async function main() {
344344

345345
await build(config, {
346346
cwd,
347-
runtime: '../../../../../src/runtime/server/index.js'
347+
runtime: '../../../../../../../src/runtime/server/index.js'
348348
});
349349

350350
context.server = await preview({ port, config, cwd, host: undefined, https: false });

pnpm-lock.yaml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)