Skip to content

Files

This branch is 4182 commits behind sveltejs/kit:main.

adapter-node

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Oct 1, 2021
Oct 1, 2021
Apr 4, 2021
Oct 14, 2021
May 7, 2021
Oct 23, 2021
Sep 13, 2021
Oct 14, 2021
Oct 14, 2021
Aug 27, 2021
May 4, 2021

@sveltejs/adapter-node

Adapter for SvelteKit apps that generates a standalone Node server.

Usage

Install with npm i -D @sveltejs/adapter-node@next, then add the adapter to your svelte.config.js:

// svelte.config.js
import adapter from '@sveltejs/adapter-node';

export default {
	kit: {
		adapter: adapter({
			// default options are shown
			out: 'build',
			precompress: false,
			env: {
				host: 'HOST',
				port: 'PORT'
			}
		})
	}
};

Options

entryPoint

The server entry point. Allows you to provide a custom server implementation. Defaults to the provided reference server.

out

The directory to build the server to. It defaults to build — i.e. node build would start the server locally after it has been created.

precompress

Enables precompressing using gzip and brotli for assets and prerendered pages. It defaults to false.

env

By default, the server will accept connections on 0.0.0.0 using port 3000. These can be customised with the PORT and HOST environment variables:

HOST=127.0.0.1 PORT=4000 node build

You can specify different environment variables if necessary using the env option.

Middleware

The adapter exports a middleware (req, res, next) => {} that's compatible with Express / Connect / Polka. Additionally, it also exports a reference server implementation using this middleware with a plain Node HTTP server.

But you can use your favorite server framework to combine it with other middleware and server logic. You can import kitMiddleware, your ready-to-use SvelteKit middleware from the build directory. You can use the entryPoint option to bundle your custom server entry point.

// src/server.js
import { assetsMiddleware, prerenderedMiddleware, kitMiddleware } from '../build/middlewares.js';
import polka from 'polka';

const app = polka();

const myMiddleware = function (req, res, next) {
	console.log('Hello world!');
	next();
};

app.use(myMiddleware);

app.get('/no-svelte', (req, res) => {
	res.end('This is not Svelte!');
});

app.all('*', assetsMiddleware, prerenderedMiddleware, kitMiddleware);.

// Express users can also write in a second way:
// app.use(assetsMiddleware, prerenderedMiddleware, kitMiddleware);

app.listen(3000);

For using middleware in dev mode, see the FAQ.

Advanced Configuration

esbuild

As an escape hatch, you may optionally specify a function which will receive the final esbuild options generated by this adapter and returns a modified esbuild configuration. The result of this function will be passed as-is to esbuild. The function can be async.

For example, you may wish to add a plugin:

adapterNode({
	esbuild(defaultOptions) {
		return {
			...defaultOptions,
			plugins: []
		};
	}
});

The default options for this version are as follows:

{
	entryPoints: ['.svelte-kit/node/index.js'],
	outfile: 'pathTo/index.js',
	bundle: true,
	external: allProductionDependencies, // from package.json
	format: 'esm',
	platform: 'node',
	target: 'node14',
	inject: ['pathTo/shims.js'],
	define: {
		esbuild_app_dir: `"${config.kit.appDir}"`
	}
}

Changelog

The Changelog for this package is available on GitHub.

License

MIT