Files
shop/vite.config.ts
zeekay 6cfea751c7 shop-storefront: minimal editorial product storefront on the Hanzo stack
MONO — a monochrome shop of design objects: storefront grid, product detail,
and cart over @hanzo/gui (UI) + @hanzo/iam (PKCE auth) + @hanzo/base (org-scoped
data). Forked from hanzo-starter with an identical provider stack, vite config,
auth, and deploy contract.

- schema.sql: products + cart_items collections, org-scoped
- generated monochrome studio imagery from the design system (no asset deps)
- checkout stub clears the cart (wire to Hanzo Commerce for real orders)
2026-07-21 13:41:07 -07:00

35 lines
1.3 KiB
TypeScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
/**
* Hanzo starter — Vite config.
*
* @hanzo/gui is the Tamagui line: its runtime resolves styles against
* react-native-web. The IN-BROWSER builder runtime can't do this, which is
* exactly why a real-stack template ships as a real repo built here. Three
* things make @hanzo/gui compile + render under plain Vite (no Tamagui compiler,
* no `one`, no Expo — the optimizer is a perf pass, not a correctness one):
* 1. alias `react-native` -> `react-native-web` (gui imports RN primitives),
* 2. define `process.env.TAMAGUI_TARGET` / `NODE_ENV` / `__DEV__`
* (Tamagui core reads these; Vite doesn't shim `process.env` for the client),
* 3. dedupe react / react-dom / react-native-web to one copy.
*/
export default defineConfig(({ mode }) => {
const dev = mode !== 'production'
return {
plugins: [react()],
define: {
'process.env.TAMAGUI_TARGET': JSON.stringify('web'),
'process.env.NODE_ENV': JSON.stringify(dev ? 'development' : 'production'),
__DEV__: JSON.stringify(dev),
},
resolve: {
alias: { 'react-native': 'react-native-web' },
dedupe: ['react', 'react-dom', 'react-native-web'],
},
optimizeDeps: {
include: ['@hanzo/gui', '@hanzogui/config', 'react-native-web'],
},
}
})