UNPKG

esbuild-plugin-solid

Version:
34 lines (31 loc) 1.03 kB
import { parse } from 'node:path'; import { readFile } from 'node:fs/promises'; import { transformAsync } from '@babel/core'; import solid from 'babel-preset-solid'; import ts from '@babel/preset-typescript'; function solidPlugin(options) { return { name: "esbuild:solid", setup(build) { build.onLoad({ filter: /\.(t|j)sx$/ }, async (args) => { const source = await readFile(args.path, { encoding: "utf-8" }); const { name, ext } = parse(args.path); const filename = name + ext; const result = await transformAsync(source, { presets: [ [solid, options?.solid ?? {}], [ts, options?.typescript ?? {}] ], filename, sourceMaps: "inline", ...options?.babel ?? {} }); if (result?.code === void 0 || result.code === null) { throw new Error("No result was provided from Babel"); } return { contents: result.code, loader: "js" }; }); } }; } export { solidPlugin };