Skip to content
This repository has been archived by the owner on Oct 27, 2024. It is now read-only.

🦕 SvelteKit Adapter for Deno and Deno Deploy

License

Notifications You must be signed in to change notification settings

dbushell/sveltekit-adapter-deno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sveltekit-adapter-deno

⚠️ This project is no longer maintained! ⚠️

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.

Usage

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

Change the port or hostname

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.

Adapter options

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.

Node and NPM modules

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"));

Demo App

This repo publishes a SvelteKit demo app to Deno Deploy at:

sveltekit-adapter-deno.deno.dev


MIT License | Copyright © 2023 David Bushell