Skip to content

Commit f2d6437

Browse files
committed
feat: allow esbuild outExtension to be set from cli and in defineConfig
1 parent 698cff9 commit f2d6437

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

src/cli.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,12 @@ const options: Record<string, ICliOptions> = {
167167
},
168168
"esbuild-format": {
169169
type: "string",
170-
description: "Sets esbuild format (cjs|esm)",
170+
description: "Set esbuild format (cjs|esm)",
171+
},
172+
"esbuild-out-ext": {
173+
type: "string",
174+
description: "Set esbuild outExtension",
175+
example: "aws-lambda --esbuild-out-ext .mjs --esbuild-format esm",
171176
},
172177
help: { type: "boolean", short: "h" },
173178
};
@@ -179,6 +184,7 @@ const { values } = parseArgs({
179184

180185
const { port, config, debug, help, runtime, definitions, timeout, functions, handlerName, exclude, env } = values;
181186
const esbuildFormat = values["esbuild-format"];
187+
const esbuildOutExtension = values["esbuild-out-ext"];
182188

183189
if (help) {
184190
printHelpAndExit();
@@ -191,10 +197,18 @@ if (definitions && functions) {
191197
// @ts-ignore
192198
const functionDefs = functions ? await getFromGlob(new RegExp(exclude), handlerName, functions as string[]) : await getFunctionsDefinitionFromFile(definitions as string);
193199

194-
let esbuildOptions;
200+
let esbuildOptions = esbuildFormat || esbuildOutExtension ? {} : undefined;
195201

196202
if (typeof esbuildFormat == "string") {
197-
esbuildOptions = { format: esbuildFormat };
203+
// @ts-ignore
204+
esbuildOptions.format = esbuildFormat;
205+
}
206+
207+
if (typeof esbuildOutExtension == "string") {
208+
// @ts-ignore
209+
esbuildOptions.outExtension = {
210+
".js": esbuildOutExtension,
211+
};
198212
}
199213

200214
run({

src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface OfflineConfig {
1414
}
1515

1616
export interface Config {
17-
esbuild?: Omit<BuildOptions, "outExtension" | "outfile" | "bundle" | "splitting" | "stdin" | "platforme" | "metafile" | "format"> & { format?: "cjs" | "esm" };
17+
esbuild?: Omit<BuildOptions, "outfile" | "bundle" | "splitting" | "stdin" | "platforme" | "metafile" | "format"> & { format?: "cjs" | "esm" };
1818
shimRequire?: boolean;
1919
includeAwsSdk?: boolean;
2020
server?: OfflineConfig;

src/lib/esbuild/mergeEsbuildConfig.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ export const mergeEsbuildConfig = (esBuildConfig: BuildOptions, customEsBuildCon
2424
esBuildConfig.format = customEsBuildConfig.format;
2525
}
2626

27+
if (typeof customEsBuildConfig.outExtension) {
28+
esBuildConfig.outExtension = customEsBuildConfig.outExtension;
29+
}
30+
2731
if ("sourcesContent" in customEsBuildConfig) {
2832
esBuildConfig.sourcesContent = customEsBuildConfig.sourcesContent;
2933
}

src/lib/esbuild/parseCustomEsbuild.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ export const parseCustomEsbuild = (customConfig: BuildOptions) => {
2222
customEsBuild.format = customConfig.format;
2323
}
2424

25+
if (typeof customConfig.outExtension) {
26+
customEsBuild.outExtension = customConfig.outExtension;
27+
}
28+
2529
if ("sourcesContent" in customConfig) {
2630
customEsBuild.sourcesContent = customConfig.sourcesContent;
2731
}

0 commit comments

Comments
 (0)