Write Python endpoints in SvelteKit using Modal.
+server.py
just like your +server.js
filesnpm i -D sveltekit-modal
vite.config.js
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { sveltekit_modal } from 'sveltekit-modal/vite'; //Add this import
export default defineConfig({
plugins: [sveltekit_modal(), sveltekit()] //Add the `sveltekit_modal()` plugin
});
svelte.config.js
import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: vitePreprocess(),
kit: {
adapter: adapter(),
moduleExtensions: [".js", ".ts", ".py"] //Add this line, to resolve +server.py endpoints
}
};
export default config;
sveltekit_modal_config.py
. The option stub_asgi
is passed to Modal. This is where you can define GPU acceleration, secrets, and an Image for pip installs, etc. Explore their docs!import modal
config = {
'name': 'sveltekit-example',
'log': False,
'stub_asgi': {
'image': modal.Image.debian_slim()
}
}
.gitignore
, add !.env.production
.npm run dev
npx sveltekit-modal deploy
The example_app/
directory contains an incredibly bare and demonstrates how to get it working.