#Configuration
.env.local (untracked, see .env.example) supplies VITE_FIREBASE_*, an
optional VITE_GOOGLE_PLACES_API_KEY, and VITE_USE_EMULATORS. No analytics.
Vite substitutes these at build time, so they are properties of a bundle rather
than of a deployment: a build made without them cannot be repaired by supplying
them afterwards. Absent, app.ts throws while the module graph is still
evaluating, React never mounts, and the page is blank. A configResolved guard
in vite.config.ts fails a production build that lacks the three app.ts
requires, so that failure happens on the machine that can fix it; emulator builds
(VITE_USE_EMULATORS=true) are exempt, since app.ts defaults them.
Hosting serves two sites. Target app serves dist/ with a predeploy hook
that runs npm run build; target docs serves docs-dist/ with one that runs
npm run docs:build. So firebase deploy builds what it ships, for both.
Hooks are per target, so --only firestore:rules triggers neither, and
--only hosting:app builds and ships the app alone.