Package Exports
- @sveltejs/adapter-node
- @sveltejs/adapter-node/package.json
Readme
@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 buildYou 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.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: 'node12',
inject: ['pathTo/shims.js'],
define: {
esbuild_app_dir: `"${config.kit.appDir}"`
}
}Changelog
The Changelog for this package is available on GitHub.