* Sets up the Vite config with Tailwind CSS 4. * Creates the main.css file and modifies vite.config.ts.
(dirName: string, ts: boolean)
| 424 | * Creates the main.css file and modifies vite.config.ts. |
| 425 | */ |
| 426 | async function setupViteConfig(dirName: string, ts: boolean) { |
| 427 | const projectPath = resolve(cwd(), `./${dirName}`) |
| 428 | |
| 429 | // Create src/assets/main.css with Tailwind 4 imports |
| 430 | const cssDir = resolve(projectPath, 'src/assets') |
| 431 | await mkdir(cssDir, { recursive: true }) |
| 432 | await writeFile( |
| 433 | resolve(cssDir, 'main.css'), |
| 434 | `@import "tailwindcss"; |
| 435 | @source "../../formkit.theme.${ts ? 'ts' : 'mjs'}"; |
| 436 | @source "../../formkit.config.${ts ? 'ts' : 'mjs'}"; |
| 437 | |
| 438 | body { |
| 439 | @apply bg-gray-100; |
| 440 | } |
| 441 | ` |
| 442 | ) |
| 443 | |
| 444 | // Modify vite.config.ts to add tailwindcss plugin |
| 445 | const viteConfigPath = resolve(projectPath, `vite.config.${ts ? 'ts' : 'js'}`) |
| 446 | let config = await readFile(viteConfigPath, 'utf-8') |
| 447 | |
| 448 | // Add tailwindcss import at the top if not present |
| 449 | if (!config.includes('@tailwindcss/vite')) { |
| 450 | config = `import tailwindcss from '@tailwindcss/vite'\n${config}` |
| 451 | } |
| 452 | |
| 453 | // Add tailwindcss() to plugins array |
| 454 | config = config.replace( |
| 455 | /plugins:\s*\[([^\]]*)\]/, |
| 456 | (_match, plugins) => { |
| 457 | const existingPlugins = plugins.trim() |
| 458 | if (existingPlugins) { |
| 459 | return `plugins: [${existingPlugins}, tailwindcss()]` |
| 460 | } |
| 461 | return `plugins: [tailwindcss()]` |
| 462 | } |
| 463 | ) |
| 464 | |
| 465 | await writeFile(viteConfigPath, config) |
| 466 | } |
| 467 | |
| 468 | function buildMain(ts: boolean) { |
| 469 | return `import { createApp } from 'vue' |