From 40d95c292d9d230d8ff298a79b3bbd8640d4c4c3 Mon Sep 17 00:00:00 2001 From: CharlieHelps Date: Tue, 9 Dec 2025 22:17:53 +0000 Subject: [PATCH 1/3] fix(create-mail): add react-dom to scaffold devDeps --- .../generators/package.json.mustache | 3 ++- test/cli/create-mail.test.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/create-mail/generators/package.json.mustache b/packages/create-mail/generators/package.json.mustache index 543fe6e3..9c95408a 100644 --- a/packages/create-mail/generators/package.json.mustache +++ b/packages/create-mail/generators/package.json.mustache @@ -12,6 +12,7 @@ "jsx-email": "^2.0.0" }, "devDependencies": { - "react": "^19.1.0"{{{ typeDep }}} + "react": "^19.1.0", + "react-dom": "^19.1.0"{{{ typeDep }}} } } diff --git a/test/cli/create-mail.test.ts b/test/cli/create-mail.test.ts index 8ece17ca..20dd340b 100644 --- a/test/cli/create-mail.test.ts +++ b/test/cli/create-mail.test.ts @@ -21,6 +21,23 @@ describe('create-mail', async () => { expect(plain).toMatchSnapshot(); + type PackageJson = { + dependencies?: Record; + devDependencies?: Record; + }; + + const packageJson = JSON.parse( + await readFile(join(__dirname, '.test/new/package.json'), 'utf8') + ) as PackageJson; + + expect(packageJson.devDependencies).toMatchObject({ + react: expect.any(String), + 'react-dom': expect.any(String) + }); + + expect(packageJson.dependencies ?? {}).not.toHaveProperty('react'); + expect(packageJson.dependencies ?? {}).not.toHaveProperty('react-dom'); + const contents = await readFile(join(__dirname, '.test/new/templates/email.tsx'), 'utf8'); expect(contents).toMatchSnapshot(); From 5db639aa0362967c475e931063d2ae4221329511 Mon Sep 17 00:00:00 2001 From: CharlieHelps Date: Tue, 9 Dec 2025 23:25:37 +0000 Subject: [PATCH 2/3] docs: align examples with create-mail scaffolds Reorder imports and adjust spacing in documentation examples to match the updated create-mail scaffold conventions, keeping import groupings consistent across docs. Refs: #384 --- docs/components/graph.md | 2 +- docs/core/compile.md | 4 ++-- docs/core/plugins.md | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/components/graph.md b/docs/components/graph.md index 0c2eea36..c88a928b 100644 --- a/docs/components/graph.md +++ b/docs/components/graph.md @@ -18,7 +18,7 @@ This component is wrapper around [QuickChart API](https://quickchart.io/) for ge Add the graph component to your email template. ```jsx -import { Html, Body, Section, Graph } from 'jsx-email'; +import { Body, Graph, Html, Section } from 'jsx-email'; const Email = () => { return ( diff --git a/docs/core/compile.md b/docs/core/compile.md index c2c38bbd..65298c21 100644 --- a/docs/core/compile.md +++ b/docs/core/compile.md @@ -28,10 +28,10 @@ const compiledFiles = await compile({ files: [templatePath], hashFiles: false, o Once compiled into a bundle, the file can be imported and passed to render such like: ```jsx -import { Template } from './.compiled/batman.js'; - import { render } from 'jsx-email'; +import { Template } from './.compiled/batman.js'; + const html = render(