What is @sveltejs/adapter-node?
@sveltejs/adapter-node is an adapter for SvelteKit that allows you to build and deploy your SvelteKit application as a Node.js server. This adapter is useful for deploying SvelteKit applications to environments where Node.js is available, such as traditional hosting providers or custom server setups.
What are @sveltejs/adapter-node's main functionalities?
Basic Setup
This code demonstrates how to configure the @sveltejs/adapter-node in your SvelteKit project. The `adapter` function is imported and used in the `kit` configuration. You can specify the output directory, whether to precompress files, and environment variables for the host and port.
```javascript
// svelte.config.js
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter({
out: 'build',
precompress: false,
env: {
host: 'HOST',
port: 'PORT'
}
})
}
};
```
Custom Server
This code demonstrates how to create a custom server using Express.js with the built SvelteKit application. The `handler` from the build directory is used to handle requests, and the server listens on a specified port.
```javascript
// server.js
import { handler } from './build/handler.js';
import express from 'express';
const app = express();
app.use(handler);
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```
Environment Variables
This code demonstrates how to use environment variables with @sveltejs/adapter-node. The `env` option in the adapter configuration allows you to specify environment variables for the host and port. These variables can be defined in a `.env` file.
```javascript
// svelte.config.js
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter({
env: {
host: 'HOST',
port: 'PORT'
}
})
}
};
// .env
HOST=localhost
PORT=3000
```
Other packages similar to @sveltejs/adapter-node
@sveltejs/adapter-static
@sveltejs/adapter-static is an adapter for SvelteKit that allows you to build your application as a set of static files. This is useful for deploying to static hosting providers like GitHub Pages or Netlify. Unlike @sveltejs/adapter-node, it does not require a Node.js server.
@sveltejs/adapter-vercel
@sveltejs/adapter-vercel is an adapter for SvelteKit that allows you to deploy your application to Vercel. It is specifically designed to work with Vercel's serverless functions and deployment platform. This adapter abstracts away the server setup, unlike @sveltejs/adapter-node, which requires a custom server.
@sveltejs/adapter-netlify
@sveltejs/adapter-netlify is an adapter for SvelteKit that allows you to deploy your application to Netlify. It is designed to work with Netlify's serverless functions and deployment platform. Similar to @sveltejs/adapter-vercel, it abstracts away the server setup.
adapter-node
Adapter for Svelte apps that builds a Node server — the equivalent of sapper build
.
This is very experimental; the adapter API isn't at all fleshed out, and things will definitely change.