Generate the SvelteKit app
We’ll assume you have NodeJS installed already and can runnpm. We recommend
using npm over yarn, as npm is what SvelteKit references in their documentation.
Let’s create a new project by running npm create. This will scaffold a new project asking you if you’d like to set up some basic tooling such as TypeScript.
npm install to install the necessary dependencies and proceed with configuring the adapter.
Configuring the Adapter
Before you can deploy your SvelteKit app, you need to adapt it for your deployment target. Adapters are small plugins that take the built app as input and generate output for deployment. In this example, to deploy your app on Fly.io, we’ll install the Node Adapter. You can install it by executing the commandnpm i -D @sveltejs/adapter-node. Then, replace the first line in your svelte.config.js file with the following:
Configuring the start command
The “start” command is used to initiate your application and should be included before deploying.
To add the command, locate the scripts section within the package.json file and insert "start": "node build", at the beginning of the section. As a result, your scripts section in the package.json file should appear as follows:
Building the Application
Building a SvelteKit app happens in two stages, both of which are executed when the commandnpm run build is run.
Firstly, Vite undertakes the creation of an optimized production build that encompasses your server code, browser code, and, if applicable, your service worker. Prerendering is carried out during this stage if deemed necessary.
Secondly, an adapter is employed to fine-tune this production build to align with your specific target environment.
Preview your Application
Once the build process is complete, you can preview your production build locally by executing the commandnpm run preview.
Install Flyctl and Login
We are ready to start working with Fly.io, and that means we needflyctl, our CLI app for managing apps on Fly.io. If you’ve already installed it, carry on. If not, hop over to our installation guide. Once that’s installed you’ll want to log in to Fly.io.
Deploy the app on Fly.io
Each Fly App needs afly.toml file to tell the system how we’d like to deploy it.
That file can be automatically generated with fly launch. This command will also generate a Dockerfile for deployment.
Inside fly.toml
The fly.toml file now contains a default configuration for deploying your app. In the process of creating that file, flyctl has also created a Fly.io application slot of the same name, “hello-sveltekit”. If we look at the fly.toml configuration file we can see the name in there:
flyctl command will always refer to this file in the current directory if it exists, specifically for the app name/value at the start. That name will be used to identify the application to the Fly.io platform.
The rest of the file contains settings to be applied to the application when it deploys.
Deploying to Fly.io
We are now ready to deploy our containerized app to Fly.io:hello-sveltekit from our fly.toml and start the process of deploying our application to Fly.io using the Dockerfile. fly will return you to the command line when it’s done.
Viewing the Deployed App
If you want to find out more about the deployment. The commandfly status will give you all the essential details.
Connecting to the App
The quickest way to browse your newly deployed application is with theflyctl apps open command.
Bonus Points
If you want to know what IP addresses the app is using, tryfly ips list: