sapper-firebase-starter
sapper-template-firebase
svelte-preprocess
svelte-preprocess
main
or master
manifest.json
's most important fields filled outeslint:fix
package scriptThis template comes from combining two of my smaller ones: one for Tailwind CSS (PostCSS), and another for TypeScript and GraphQL. If this is too much for you, check out one of those!
You need to be using version 12 or higher of Node; the package.json
engines
field only specifies 10
for Cloud Functions for Firebase.
yarn # pnpm also works
yarn dev
This will create a production build for you before deploying.
yarn deploy
This probably pairs well with Firebase Emulators.
yarn prod
yarn start
Cloud Functions for Firebase requires billing set up with the Blaze Plan, but you can stay on the Spark Plan for a free and fast (no cold starts!) static site:
yarn deploy:export
This will create an exported build for you before deploying.
If your project is transitioning from SSR to a static site, be sure to delete the residual ssr
Cloud Function:
yarn firebase functions:delete ssr
You will also need to remove rewrites
from firebase.json
.
The least you should need to do to get started is to edit .firebaserc
, changing the project ID to your project (initialized in the Firebase console) ID.
For automatic building and deployment to work, you need to generate a CI login token from Firebase:
yarn firebase login:ci
Then, go to your repository's Settings > Secrets. Copy the result of the command above and save it as a Secret named FIREBASE_TOKEN
.
You can test if it's working by making a commit to main
or master
and checking the Actions tab of your repository to see if your project successfully builds and deploys to Firebase.
Many of the fields in static/manifest.json
(short_name
, name
, description
, categories
, theme_color
, and background_color
) are filled with demonstrative values that won't match your site. Similarly, you've got to take new screenshots to replace the included static/screenshot-1.png
and static/screenshot-2.png
files. If you want, you can add app shortcut definitions for "add to home screen" on Android. Once you change theme_color
, update the meta name="theme-color"
tag in src/template.html
to match.
The Apple touch icon, favicon, and logo-
files (also all in the static
directory) are created by placing the logo within a "safe area" centered circle that takes up 80% of the canvas's dimension. For instance, the constraining circle in logo-512.png
is 512 ร 0.80 = 409.6 โ 410 pixels wide and tall.
This project base comes with source maps enabled during development and disabled during production for the best compromise between performance and developer experience. You can change this behavior through the sourcemap
variable in rollup.config.js
.
src/global.pcss
filepostcss.config.js
:const tailwindcss = require("tailwindcss");
const tailwindcssConfig = require("./tailwind.config");
tailwindcss(tailwindcssConfig),
tailwind.config.js
filetailwindcss
packageRemove these lines in src/server.ts
:
import { createApolloServer } from "./graphql";
const apolloServer = await createApolloServer();
apolloServer.applyMiddleware({ app, path: graphqlPath });
Remove the now-useless graphqlPath
parameter to createSapperAndApolloServer
in src/server.ts
. This is also a good opportunity to rename the function since there is no longer an Apollo Server; if you do rename it, then also update the reference in /index.js
or your Cloud Functions will still be referring to the old (now non-existent) function
Delete the src/graphql
folder
Uninstall the apollo-server-express
, bufferutil
, class-validator
, graphql
, reflect-metadata
, type-graphql
, and utf-8-validate
packages
Remove the now-error-causing
- name: "Delete the Unexportable GraphQL Page"
run: "rm __sapper__/export/graphql"
task in .github/workflows/build-and-deploy.yml
Forked from babichjacob @babichjacob's Opinionated Sapper