Skip to content

Commit 583603d

Browse files
committed
feat(react-email, preview-server): fixed equal versions for both (#2277)
1 parent 099bc94 commit 583603d

File tree

6 files changed

+58
-20
lines changed

6 files changed

+58
-20
lines changed

.changeset/common-goats-find.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@react-email/preview-server": patch
3+
"react-email": patch
4+
---
5+
6+
Use the same version for the preview-server and react-email

.changeset/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
33
"changelog": "@changesets/cli/changelog",
44
"commit": false,
5-
"linked": [],
5+
"fixed": [["react-email", "@react-email/preview-server"]],
66
"access": "public",
77
"baseBranch": "main",
88
"updateInternalDependencies": "patch",

packages/preview-server/_index.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/preview-server/index.mjs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* this file is required so that import.meta.resolve and require.resolve can properly can find the module for this package
3+
*/
4+
import fs from 'node:fs/promises';
5+
import path from 'node:path';
6+
import url from 'node:url';
7+
8+
const filename = url.fileURLToPath(import.meta.url);
9+
const dirname = path.dirname(filename);
10+
const packageJson = JSON.parse(
11+
await fs.readFile(path.join(dirname, 'package.json'), 'utf-8'),
12+
);
13+
14+
/**
15+
* @type {string}
16+
*/
17+
export const version = packageJson.version;

packages/preview-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"test": "vitest run",
1010
"test:watch": "vitest"
1111
},
12-
"main": "./_index.js",
12+
"main": "./index.mjs",
1313
"dependencies": {
1414
"@babel/core": "7.26.10",
1515
"@babel/parser": "^7.27.0",

packages/react-email/src/utils/get-preview-server-location.ts

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,27 @@ import url from 'node:url';
33
import { createJiti } from 'jiti';
44
import { addDevDependency } from 'nypm';
55
import prompts from 'prompts';
6+
import { packageJson } from './packageJson.js';
7+
8+
const ensurePreviewServerInstalled = async (
9+
message: string,
10+
): Promise<never> => {
11+
const response = await prompts({
12+
type: 'confirm',
13+
name: 'installPreviewServer',
14+
message,
15+
initial: true,
16+
});
17+
if (response.installPreviewServer) {
18+
console.log('Installing "@react-email/preview-server"');
19+
await addDevDependency(
20+
`@react-email/preview-server@${packageJson.version}`,
21+
);
22+
process.exit(0);
23+
} else {
24+
process.exit(0);
25+
}
26+
};
627

728
export const getPreviewServerLocation = async () => {
829
const usersProject = createJiti(process.cwd());
@@ -13,20 +34,18 @@ export const getPreviewServerLocation = async () => {
1334
.path!,
1435
);
1536
} catch (_exception) {
16-
const response = await prompts({
17-
type: 'confirm',
18-
name: 'installPreviewServer',
19-
message:
20-
'To run the preview server, the pacakge "@react-email/preview-server" must be installed. Would you like to install it?',
21-
initial: true,
22-
});
23-
if (response.installPreviewServer) {
24-
console.log('Installing "@react-email/preview-server"');
25-
await addDevDependency('@react-email/preview-server');
26-
process.exit(0);
27-
} else {
28-
process.exit(0);
29-
}
37+
await ensurePreviewServerInstalled(
38+
'To run the preview server, the package "@react-email/preview-server" must be installed. Would you like to install it?',
39+
);
40+
}
41+
const { version } = await usersProject.import<{
42+
version: string;
43+
}>('@react-email/preview-server');
44+
if (version !== packageJson.version) {
45+
await ensurePreviewServerInstalled(
46+
`To run the preview server, the version of "@react-email/preview-server" must match the version of "react-email" (${packageJson.version}). Would you like to install it?`,
47+
);
3048
}
49+
3150
return previewServerLocation;
3251
};

0 commit comments

Comments
 (0)