There are a few things you need to do to get the Svelte default app to run over HTTPS on localhost.
First, generate a certificate and key. Save these as certificate.crt
and certificate.key
in the project’s folder.
Next, edit package.json. Change the “start” command to:
"start": "sirv public --no-clear --single --http2 --port 5000 --cert certificate.crt --key certificate.key"
Note that port 5000 is the default, so technically --port 5000
is redundant, but if you were to change it, this is where you would change it. When you run npm run dev
, the application will now run on https://localhost:5000. Note, though, that livereload.js will still be running as http and will fail. Here’s how we fix that.
Edit rollup.config.js. Import the node fs command we need (Note: this is a node library so you don’t need any new imports in package.json):
import { readFileSync } from 'fs'
Replace the line:
!production && livereload('public'),
With:
!production && livereload({
watch: 'public',
port: 5001,
https: {
key: readFileSync( 'certificate.key'),
cert: readFileSync('certificate.crt'),
},
}),
Here I’ve set the port to 5001, but if omitted it will default to some other port.