From 12428280cfc7acbae21bf4ec9072e30ee2ecdd9e Mon Sep 17 00:00:00 2001 From: Felicio Mununga Date: Tue, 16 May 2023 13:04:47 +0200 Subject: [PATCH] Set up web app deployment (#399) * env * vercel.json * u * global * ignore * preview * vercel * turbo * fix turbo * rm TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD * use globaThis --- apps/web/.env | 1 + apps/web/.env.development | 1 + apps/web/.env.production | 1 + apps/web/.gitignore | 4 ++++ apps/web/package.json | 6 +++--- apps/web/vercel.json | 11 ++++++++++ apps/web/vite.config.ts | 45 +++++++++++++++++++++------------------ apps/website/.gitignore | 1 + apps/website/package.json | 2 +- apps/website/vercel.json | 2 +- turbo.json | 4 ++++ 11 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 apps/web/.env create mode 100644 apps/web/.env.development create mode 100644 apps/web/.env.production create mode 100644 apps/web/vercel.json diff --git a/apps/web/.env b/apps/web/.env new file mode 100644 index 00000000..181f1955 --- /dev/null +++ b/apps/web/.env @@ -0,0 +1 @@ +TAMAGUI_TARGET=web diff --git a/apps/web/.env.development b/apps/web/.env.development new file mode 100644 index 00000000..181f1955 --- /dev/null +++ b/apps/web/.env.development @@ -0,0 +1 @@ +TAMAGUI_TARGET=web diff --git a/apps/web/.env.production b/apps/web/.env.production new file mode 100644 index 00000000..181f1955 --- /dev/null +++ b/apps/web/.env.production @@ -0,0 +1 @@ +TAMAGUI_TARGET=web diff --git a/apps/web/.gitignore b/apps/web/.gitignore index a547bf36..9c813f97 100644 --- a/apps/web/.gitignore +++ b/apps/web/.gitignore @@ -22,3 +22,7 @@ dist-ssr *.njsproj *.sln *.sw? + +# local env files +!.env.* +.env*.local diff --git a/apps/web/package.json b/apps/web/package.json index 9e32d2fc..53991b83 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -3,9 +3,9 @@ "private": true, "version": "0.0.0", "scripts": { - "dev": "TAMAGUI_TARGET='web' vite", - "build": "tsc && vite build", - "preview": "vite preview", + "dev": "TAMAGUI_TARGET=web vite", + "build": "tsc && TAMAGUI_TARGET=web vite build", + "preview": "TAMAGUI_TARGET=web vite preview", "lint": "eslint src", "typecheck": "tsc", "clean": "rimraf node_modules .turbo" diff --git a/apps/web/vercel.json b/apps/web/vercel.json new file mode 100644 index 00000000..dd9e466b --- /dev/null +++ b/apps/web/vercel.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "git": { + "deploymentEnabled": { + "main": false + } + }, + "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/{colors,components,icons,status-js} ./", + "installCommand": "yarn install --cwd ../../ --frozen-lockfile", + "buildCommand": "turbo run build --cwd ../../ --filter=web..." +} diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index c7b1fc16..ab294820 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,13 +1,10 @@ import { tamaguiPlugin } from '@tamagui/vite-plugin' import react from '@vitejs/plugin-react-swc' import path from 'path' -import { defineConfig } from 'vite' +import { defineConfig, loadEnv } from 'vite' import type { PluginOption } from 'vite' -process.env.TAMAGUI_TARGET = 'web' -process.env.TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD = '1' - const tamaguiConfig = { components: ['@status-im/components'], config: './tamagui.config.ts', @@ -15,22 +12,28 @@ const tamaguiConfig = { } // @see: https://vitejs.dev/config -export default defineConfig({ - resolve: { - // mainFields: ['module', 'jsnext:main', 'jsnext'], - alias: { - '@status-im/components/hooks': path.resolve( - '../../packages/components/hooks' - ), - '@status-im/components': path.resolve('../../packages/components/src'), +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd(), '') + + return { + resolve: { + // mainFields: ['module', 'jsnext:main', 'jsnext'], + alias: { + '@status-im/components/hooks': path.resolve( + '../../packages/components/hooks' + ), + '@status-im/components': path.resolve('../../packages/components/src'), + }, }, - }, - define: { - TAMAGUI_TARGET: JSON.stringify('web'), - }, - plugins: [ - react(), - tamaguiPlugin(tamaguiConfig) as PluginOption, - // tamaguiExtractPlugin(tamaguiConfig) - ], + define: { + // @see https://github.com/tamagui/tamagui/blob/a0d5fa0d05e6988a7cfa2a5e7823f295b82bae10/packages/tamagui/src/setup.ts#LL20C1-L20C28 + global: 'globalThis', + 'process.env.TAMAGUI_TARGET': JSON.stringify(env.TAMAGUI_TARGET), + }, + plugins: [ + react(), + tamaguiPlugin(tamaguiConfig) as PluginOption, + // tamaguiExtractPlugin(tamaguiConfig) + ], + } }) diff --git a/apps/website/.gitignore b/apps/website/.gitignore index b47c5754..21ee23ce 100644 --- a/apps/website/.gitignore +++ b/apps/website/.gitignore @@ -26,6 +26,7 @@ yarn-error.log* .pnpm-debug.log* # local env files +!.env.* .env*.local # vercel diff --git a/apps/website/package.json b/apps/website/package.json index 8bf06285..773ebbc4 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -9,7 +9,7 @@ "lint": "next lint", "typecheck": "tsc", "clean": "rimraf .next .tamagui .vercel/output node_modules", - "serve": "next start --port 8151" + "preview": "next start --port 8151" }, "dependencies": { "@radix-ui/react-dialog": "^1.0.3", diff --git a/apps/website/vercel.json b/apps/website/vercel.json index dd39791e..77bfaa99 100644 --- a/apps/website/vercel.json +++ b/apps/website/vercel.json @@ -5,7 +5,7 @@ "main": false } }, - "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json} ../../packages/{colors,components,icons} ./", + "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/{colors,components,icons,status-js} ./", "installCommand": "yarn install --cwd ../../ --frozen-lockfile", "buildCommand": "turbo run build --cwd ../../ --filter=website..." } diff --git a/turbo.json b/turbo.json index e7b7c58f..2091c8c5 100644 --- a/turbo.json +++ b/turbo.json @@ -5,6 +5,10 @@ "dependsOn": ["^build"], "outputs": ["dist/**"] }, + "web#build": { + "dependsOn": ["^build"], + "outputs": ["dist/**"] + }, "website#build": { "dependsOn": ["^build"], "env": ["TAMAGUI_TARGET", "TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD"],