diff --git a/.changeset/custom-extension-cli.md b/.changeset/custom-extension-cli.md
new file mode 100644
index 0000000000..fe32ceba9a
--- /dev/null
+++ b/.changeset/custom-extension-cli.md
@@ -0,0 +1,5 @@
+---
+"react-email": minor
+---
+
+Enable custom export extensions via --extension/-e (e.g. .blade.php).
diff --git a/apps/docs/cli.mdx b/apps/docs/cli.mdx
index 1651ca0342..7590eaaace 100644
--- a/apps/docs/cli.mdx
+++ b/apps/docs/cli.mdx
@@ -190,6 +190,10 @@ Generates the plain HTML files of your emails into a `out` directory.
Change the directory of your email templates.
+
+ Set a custom file extension for rendered templates (for example, `blade.php`). When omitted,
+ the extension defaults to `.html`, or `.txt` when `--plainText` is enabled.
+
## `email help `
diff --git a/packages/react-email/src/commands/export.ts b/packages/react-email/src/commands/export.ts
index 1086bd4adf..b77be35935 100644
--- a/packages/react-email/src/commands/export.ts
+++ b/packages/react-email/src/commands/export.ts
@@ -30,6 +30,7 @@ const getEmailTemplatesFromDirectory = (emailDirectory: EmailsDirectory) => {
};
type ExportTemplatesOptions = Options & {
+ extension?: string;
silent?: boolean;
pretty?: boolean;
};
@@ -115,6 +116,15 @@ export const exportTemplates = async (
},
);
+ const extension =
+ options.extension && options.extension.length > 0
+ ? options.extension.startsWith('.')
+ ? options.extension
+ : `.${options.extension}`
+ : options.plainText
+ ? '.txt'
+ : '.html';
+
for await (const template of allBuiltTemplates) {
try {
if (spinner) {
@@ -134,10 +144,7 @@ export const exportTemplates = async (
emailModule.reactEmailCreateReactElement(emailModule.default, {}),
options,
);
- const htmlPath = template.replace(
- '.cjs',
- options.plainText ? '.txt' : '.html',
- );
+ const htmlPath = template.replace('.cjs', extension);
writeFileSync(htmlPath, rendered);
unlinkSync(template);
} catch (exception) {
diff --git a/packages/react-email/src/commands/testing/__snapshots__/export.spec.ts.snap b/packages/react-email/src/commands/testing/__snapshots__/export.spec.ts.snap
index 615acfb5ad..9304056de9 100644
--- a/packages/react-email/src/commands/testing/__snapshots__/export.spec.ts.snap
+++ b/packages/react-email/src/commands/testing/__snapshots__/export.spec.ts.snap
@@ -195,3 +195,199 @@ exports[`email export 1`] = `