egoist / tsup

The simplest and fastest way to bundle your TypeScript libraries.
https://tsup.egoist.dev
MIT License
8.48k stars 209 forks source link

Is there a way to get the `result` of `esbuild` when using the `build`api? #1082

Open 1111mp opened 4 months ago

1111mp commented 4 months ago
function build(_options: Options): Promise<void>

I've read the tsup documentation carefully, but still haven't found a way to read the result of esbuild. The closest method so far is to obtain the code string through the renderChunk method of plugin.

type RenderChunk = (this: PluginContext, code: string, chunkInfo: ChunkInfo) => MaybePromise<{
    code: string;
    map?: object | string | SourceMap$1 | null;
} | undefined | null | void>;

type Plugin = {
    name: string;
    esbuildOptions?: ModifyEsbuildOptions;
    buildStart?: BuildStart;
    renderChunk?: RenderChunk;
    buildEnd?: BuildEnd;
};

It's also possible that I missed some important documentation by mistake. If there is already a way to do this please feel free to correct me. Thanks. 🌹

Get whether the build method can be supported to return the result of esbuild, like this:

import { type BuildResult } from "esbuild";

function build(_options: Options): Promise<BuildResult[]>;

If possible I would like to submit a PR to support this feature. Of course there may be a better way, please feel free to let me know. Thanks.

Upvote & Fund

Fund with Polar

mayank1513 commented 2 months ago

You can use esbuildPlugins to get the build outputs.

Check out esbuild-plugin-react18 For an example.