Deno is now mostly compatible with SvelteKit and the official adapters should be preferred.
This adapter still works for Deno and Deno Deploy but I no longer use nor maintain it.
I would not recommend Deno Deploy for website hosting due to unresolved isolate start-up time issues and increased latency due to the reduction in regions.
Adapter for SvelteKit apps that generates a standalone Deno or Deno Deploy server.
Install in your SvelteKit project:
npm install --save-dev sveltekit-adapter-deno
Add the adapter to your SvelteKit configuration.
// svelte.config.js
import adapter from "sveltekit-adapter-deno";
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
adapter: adapter(),
},
};
export default config;
Build the app for production (npm run build
).
Serve with Deno from the build directory:
deno run --allow-env --allow-read --allow-net mod.ts
For Deno Deploy set the entry point to mod.ts
.
See the GitHub Action workflow for automated deployment.
Using deployctl:
deployctl deploy --project=demo --import-map=import_map.json mod.ts
The following environment variables can be used to change the port and hostname:
PORT=5678 HOST=0.0.0.0 deno run --allow-env --allow-read --allow-net mod.ts
The default port is 8000
and the default hostname is 0.0.0.0
.
See the TypeScript definition for AdapterOptions
. You can
specify the build output directory and provide additional esbuild options.
The usage
option is used to determine where the current directory is (this is
needed for the static and prerendered files). The default is usage: 'deno'
which uses the import.meta.url
to get the current directory. If you want to
compile the result with deno compile
you should use usage: 'deno-compile'
which uses Deno.execPath()
to get the current directory.
Import Node modules in server routes with the node:
prefix:
import * as fs from "node:fs";
import { Buffer } from "node:buffer";
Import NPM modules as if coding for Node:
import slugify from "@sindresorhus/slugify";
console.log(slugify("I ♥ Deno"));
This repo publishes a SvelteKit demo app to Deno Deploy at:
sveltekit-adapter-deno.deno.dev
MIT License | Copyright © 2023 David Bushell