39 lines
1.0 KiB
TypeScript

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;
}
};