🏡 index : quine-global/webdriverio.git

import url from 'node:url'
import path from 'node:path'
import { resolve } from 'import-meta-resolve'
import type { InlineConfig } from 'vite'

import { hasFileByExtensions } from '../utils.js'

/**
 * returns `true` if TailwindCSS config exist but no postcss.config
 * (if a `postcss.config` exists it will be automatically picked up by Vite)
 */
export function isUsingTailwindCSS (rootDir: string) {
    return Promise.all([
        hasFileByExtensions(path.join(rootDir, 'tailwind.config')),
        hasFileByExtensions(path.join(rootDir, 'postcss.config'))
    ]).then(([hasTailwindConfig, hasPostCSSConfig]) => {
        return hasTailwindConfig && !hasPostCSSConfig
    })
}

/**
 * add tailwind plugin if installed as dependency
 */
export async function optimizeForTailwindCSS (rootDir: string) {
    const viteConfig: InlineConfig = {}
    const tailwindcssPath = await resolve('tailwindcss', url.pathToFileURL(path.resolve(rootDir, 'index.js')).href)
    const tailwindcss = (await import(tailwindcssPath)).default
    viteConfig.css = {
        postcss: { plugins: [tailwindcss] }
    }
    return viteConfig
}