diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 4c3dee69..c7827d98 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -117,6 +117,11 @@ export const dependencyVersionMap = { "@opennextjs/cloudflare": "^1.3.0", "nitro-cloudflare-dev": "^0.2.2", "@sveltejs/adapter-cloudflare": "^7.0.4", + + // TailwindCSS and related dependencies + autoprefixer: "^10.4.21", + postcss: "^8.5.6", + tailwindcss: "^3.4.17", } as const; export type AvailableDependencies = keyof typeof dependencyVersionMap; diff --git a/apps/cli/src/helpers/project-generation/create-project.ts b/apps/cli/src/helpers/project-generation/create-project.ts index c3067c46..d96e6f13 100644 --- a/apps/cli/src/helpers/project-generation/create-project.ts +++ b/apps/cli/src/helpers/project-generation/create-project.ts @@ -9,6 +9,7 @@ import { setupAuth } from "../setup/auth-setup"; import { setupBackendDependencies } from "../setup/backend-setup"; import { setupDatabase } from "../setup/db-setup"; import { setupExamples } from "../setup/examples-setup"; +import { setupFrontendDependencies } from "../setup/frontend-setup"; import { generateCloudflareWorkerTypes, setupRuntime, @@ -42,6 +43,7 @@ export async function createProject(options: ProjectConfig) { await copyBaseTemplate(projectDir, options); await setupFrontendTemplates(projectDir, options); + await setupFrontendDependencies(options); await setupBackendFramework(projectDir, options); if (!isConvex) { await setupDbOrmTemplates(projectDir, options); diff --git a/apps/cli/src/helpers/setup/frontend-setup.ts b/apps/cli/src/helpers/setup/frontend-setup.ts new file mode 100644 index 00000000..b4c0268c --- /dev/null +++ b/apps/cli/src/helpers/setup/frontend-setup.ts @@ -0,0 +1,38 @@ +import consola from "consola"; +import pc from "picocolors"; +import type { ProjectConfig } from "../../types"; +import { addPackageDependency } from "../../utils/add-package-deps"; + +export async function setupFrontendDependencies(config: ProjectConfig) { + const { frontend, projectDir } = config; + + // Check if nativewind is being used + const hasNativeWind = frontend.includes("native-nativewind"); + const hasUnistyles = frontend.includes("native-unistyles"); + + consola.info(`Frontend: ${frontend.join(", ")}`); + consola.info(`Has NativeWind: ${hasNativeWind}`); + consola.info(`Project Dir: ${projectDir}`); + + if (hasNativeWind) { + try { + consola.info("Adding TailwindCSS dependencies..."); + // Add TailwindCSS and related dependencies to root package.json + await addPackageDependency({ + devDependencies: ["autoprefixer", "postcss", "tailwindcss"], + projectDir, + }); + + consola.success( + pc.green("Added TailwindCSS dependencies to root package.json"), + ); + } catch (error) { + consola.error(pc.red("Failed to add TailwindCSS dependencies")); + if (error instanceof Error) { + consola.error(pc.red(error.message)); + } + } + } else { + consola.info("NativeWind not detected, skipping TailwindCSS dependencies"); + } +} diff --git a/apps/cli/templates/frontend/native/nativewind/metro.config.js b/apps/cli/templates/frontend/native/nativewind/metro.config.js index 9107334d..dabeec57 100644 --- a/apps/cli/templates/frontend/native/nativewind/metro.config.js +++ b/apps/cli/templates/frontend/native/nativewind/metro.config.js @@ -17,6 +17,9 @@ config.resolver.unstable_enablePackageExports = true; config.resolver.disableHierarchicalLookup = true; +// Ensure local node_modules takes precedence +config.resolver.resolverMainFields = ["react-native", "browser", "main"]; + module.exports = config; /** diff --git a/apps/cli/templates/frontend/native/nativewind/package.json.hbs b/apps/cli/templates/frontend/native/nativewind/package.json.hbs index 66c473e0..f018ce9e 100644 --- a/apps/cli/templates/frontend/native/nativewind/package.json.hbs +++ b/apps/cli/templates/frontend/native/nativewind/package.json.hbs @@ -42,7 +42,7 @@ "devDependencies": { "@babel/core": "^7.26.10", "@types/react": "~19.0.10", - "tailwindcss": "^3.4.17", + "tailwindcss": "3.4.17", "typescript": "~5.8.2" }, "private": true diff --git a/bun.lock b/bun.lock index 94686c30..7ba04f1c 100644 --- a/bun.lock +++ b/bun.lock @@ -14,7 +14,7 @@ }, "apps/cli": { "name": "create-better-t-stack", - "version": "2.28.3", + "version": "2.28.5", "bin": { "create-better-t-stack": "dist/index.js", },