import postcssPlugin from "postcss"; import tailwindcss from "tailwindcss"; import cssnano from "cssnano"; import { FileSchema } from "~/server/db/schema/file"; import { unpackProject } from "~/server/lib/unpack-project"; import { ProjectSchema } from "~/server/db/schema/project"; export const postcss = async (project: ProjectSchema, fileData: FileSchema) => { const content = fileData.content || ""; const cfg = project.settings?.css; try { const projectDir = await unpackProject(project, { ext: "ts,tsx,js,jsx,html", }); const plugins: any[] = []; if (cfg?.tailwindcss) { plugins.push( tailwindcss({ content: [projectDir + "/**/*.{ts,tsx,js,jsx,html}"] }) ); } const result = await postcssPlugin([ ...plugins, cssnano({ preset: ["default", { discardComments: { removeAll: true } }], }), ]).process(content, { from: undefined, }); return result.css; } catch (err) { console.error("postcss error", err); return content; } };