Add style object support
This commit is contained in:
@ -1,16 +1,25 @@
|
||||
import { dirname, join } from "node:path";
|
||||
import type * as esbuild from "esbuild";
|
||||
import { CssSyntaxError } from "postcss";
|
||||
import { type Compile, type StyleMap, pkgName, toCSSText } from "./shared";
|
||||
import { type Compile, type StyleMap, pkgName } from "./shared";
|
||||
import type { BuildStyleFile } from "./index";
|
||||
|
||||
const PLUGIN_NAME = "tailwind";
|
||||
const ESBUILD_NAMESPACE = "babel-tailwind";
|
||||
|
||||
export const esbuildPlugin = (styleMap: StyleMap, compile: Compile): esbuild.Plugin => ({
|
||||
export const esbuildPlugin = ({
|
||||
styleMap,
|
||||
compile,
|
||||
buildStyleFile,
|
||||
}: {
|
||||
styleMap: StyleMap;
|
||||
compile: Compile;
|
||||
buildStyleFile: BuildStyleFile;
|
||||
}): esbuild.Plugin => ({
|
||||
name: PLUGIN_NAME,
|
||||
|
||||
setup(build) {
|
||||
build.onResolve({ filter: /^tailwind:.+\.css$/ }, ({ path, importer }) => {
|
||||
build.onResolve({ filter: /^tailwind:.+\.\w+$/ }, ({ path, importer }) => {
|
||||
const resolved = join(dirname(importer), path.replace(/^tailwind:/, ""));
|
||||
if (styleMap.has(resolved)) {
|
||||
return {
|
||||
@ -38,11 +47,8 @@ export const esbuildPlugin = (styleMap: StyleMap, compile: Compile): esbuild.Plu
|
||||
const styles = styleMap.get(path)!;
|
||||
|
||||
try {
|
||||
const result = await compile(toCSSText(styles));
|
||||
return {
|
||||
contents: result,
|
||||
loader: "css",
|
||||
};
|
||||
const [loader, contents] = await buildStyleFile(path);
|
||||
return { contents, loader };
|
||||
} catch (e) {
|
||||
if (e instanceof CssSyntaxError) {
|
||||
const lines = e.source!.split("\n");
|
||||
|
Reference in New Issue
Block a user