From 2521e9f263be60c988fcc4bc46a9888c9d644f80 Mon Sep 17 00:00:00 2001 From: EGOIST <0x142857@gmail.com> Date: Mon, 7 Mar 2022 19:11:12 +0800 Subject: [PATCH] feat: allow `banner` and `footer` to a function which accepts `format` in the parameter --- src/esbuild/index.ts | 13 +++++++++++-- src/options.ts | 11 +++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/esbuild/index.ts b/src/esbuild/index.ts index e4f69dd3..20ee6000 100644 --- a/src/esbuild/index.ts +++ b/src/esbuild/index.ts @@ -123,6 +123,15 @@ export async function runEsbuild( ...(options.esbuildPlugins || []), ] + const banner = + typeof options.banner === 'function' + ? options.banner({ format }) + : options.banner + const footer = + typeof options.footer === 'function' + ? options.footer({ format }) + : options.footer + try { result = await esbuild({ entryPoints: options.entry, @@ -134,8 +143,8 @@ export async function runEsbuild( jsxFragment: options.jsxFragment, sourcemap: options.sourcemap ? 'external' : false, target: options.target, - footer: options.footer, - banner: options.banner, + banner, + footer, tsconfig: options.tsconfig, loader: { '.aac': 'file', diff --git a/src/options.ts b/src/options.ts index 76e851cf..840db59f 100644 --- a/src/options.ts +++ b/src/options.ts @@ -16,6 +16,13 @@ export type DtsConfig = { footer?: string } +export type BannerOrFooter = + | { + js?: string + css?: string + } + | ((ctx: { format: Format }) => { js?: string; css?: string } | undefined) + /** * The options available in tsup.config.ts * Not all of them are available from CLI flags @@ -106,8 +113,8 @@ export type Options = { * @see https://esbuild.github.io/api/#metafile */ metafile?: boolean - footer?: BuildOptions['footer'] - banner?: BuildOptions['banner'] + footer?: BannerOrFooter + banner?: BannerOrFooter /** * Target platform * @default `node`