diff --git a/src/builders/copy/index.ts b/src/builders/copy/index.ts index 4985a9eb..94831441 100644 --- a/src/builders/copy/index.ts +++ b/src/builders/copy/index.ts @@ -21,10 +21,13 @@ export async function copyBuild(ctx: BuildContext): Promise { const patterns = Array.isArray(entry.pattern) ? entry.pattern : [entry.pattern || "**"]; - const paths = await glob(patterns, { + const options = { cwd: resolve(ctx.options.rootDir, entry.input), absolute: false, - }); + patterns, + }; + await ctx.hooks.callHook("copy:entry:options", ctx, entry, options); + const paths = await glob(options); const outputList = await Promise.allSettled( paths.map(async (path) => { diff --git a/src/builders/copy/types.ts b/src/builders/copy/types.ts index 3c1406cd..2690c14a 100644 --- a/src/builders/copy/types.ts +++ b/src/builders/copy/types.ts @@ -1,4 +1,5 @@ import type { BaseBuildEntry, BuildContext } from "../../types"; +import type { GlobOptions } from "tinyglobby"; export interface CopyBuildEntry extends BaseBuildEntry { builder: "copy"; @@ -10,5 +11,10 @@ export interface CopyHooks { ctx: BuildContext, entries: CopyBuildEntry[], ) => void | Promise; + "copy:entry:options": ( + ctx: BuildContext, + entry: CopyBuildEntry, + options: GlobOptions, + ) => void | Promise; "copy:done": (ctx: BuildContext) => void | Promise; }