- Static Site Generator: GatsbyJS + TypeScript + CSS Modules + MDX
- Linting: ESLint + StyleLint
- Hosting: Firebase
- Node 16
- npm 8.5.5
If you need help installing and/or managing Node and Yarn versions, check out NVM.
npm install && npm run prepare
npm install
installs the neccessary node modules for development.npm run prepare
sets up the linting pre-commit hooks via husky.
The development server watches files, rebuilds the site, and reloads the browser when files change.
npm run develop
The static server is useful for testing features that might only be relevant to the production build, such as CSP Policies, SRI hashes, Firebase routing rules (301/302 redirects or url rewrites), and Firebase functions.
npm run build && npm run serve
npm run test # runs all tests
npm run test:unit # runs unit tests
npm run test:regressions # runs regression tests
This project has two environments: staging environment and production. All
preview links are deployed to the staging environment. The production
environment can only be deploy to via a PR being merged into main
.
All PRs will be assigned a preview link during the CI/CD process. These links are good for 7 days. To regenerate a link, delete the comment and run the CI/CD action again.
Users authenticated with the Firebase CLI can generate an ad-hoc preview link site by running the following from the root of the project.
npm run build && npm run preview
Firebase function resources are shared throughout environments. If two PRs
have changes to Firebase functions, the deployed functions will be those of the
PR whose Firebase - Staging
GitHub workflow has run most recently.