Skip to content

Commit d2f0621

Browse files
huseeiinbirkskyum
andauthored
fix: allow .jsx entry-server (#2090)
Co-authored-by: Birk Skyum <74932975+birkskyum@users.noreply.github.com> Co-authored-by: Birk Skyum <birk.skyum@pm.me>
1 parent 9970bac commit d2f0621

9 files changed

Lines changed: 89 additions & 6 deletions

File tree

.changeset/warm-cats-juggle.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/start": patch
3+
---
4+
5+
Support JavaScript projects whose app and client/server entries use `.jsx`.

apps/fixtures/bare-js/package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "fixture-bare-js",
3+
"private": true,
4+
"type": "module",
5+
"scripts": {
6+
"dev": "vite dev",
7+
"build": "vite build"
8+
},
9+
"dependencies": {
10+
"@solidjs/start": "workspace:*",
11+
"nitro": "^3.0.260610-beta",
12+
"solid-js": "^1.9.11",
13+
"vite": "^8.0.0"
14+
},
15+
"engines": {
16+
"node": ">=24"
17+
}
18+
}

apps/fixtures/bare-js/src/app.jsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { createSignal } from "solid-js";
2+
3+
export default function App() {
4+
const [count, setCount] = createSignal(0);
5+
6+
return (
7+
<main>
8+
<h1>Hello world!</h1>
9+
<button onClick={() => setCount(count() + 1)} type="button">
10+
Clicks: {count()}
11+
</button>
12+
</main>
13+
);
14+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// @refresh reload
2+
import { mount, StartClient } from "@solidjs/start/client";
3+
4+
mount(() => <StartClient />, document.getElementById("app"));
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// @refresh reload
2+
import { createHandler, StartServer } from "@solidjs/start/server";
3+
4+
export default createHandler(() => (
5+
<StartServer
6+
document={({ assets, children, scripts }) => (
7+
<html lang="en">
8+
<head>
9+
<meta charset="utf-8" />
10+
<meta name="viewport" content="width=device-width, initial-scale=1" />
11+
{assets}
12+
</head>
13+
<body>
14+
<div id="app">{children}</div>
15+
{scripts}
16+
</body>
17+
</html>
18+
)}
19+
/>
20+
));
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { nitro } from "nitro/vite";
2+
import { defineConfig } from "vite";
3+
import { solidStart } from "../../../packages/start/src/config/index.ts";
4+
5+
export default defineConfig({
6+
plugins: [solidStart(), nitro()],
7+
});

packages/start/src/config/dev-server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from "vite";
1111
import { VITE_ENVIRONMENTS } from "./constants.ts";
1212

13-
export function devServer(): Array<PluginOption> {
13+
export function devServer(serverEntryPath: string): Array<PluginOption> {
1414
return [
1515
{
1616
name: "solid-start-dev-server",
@@ -62,7 +62,7 @@ export function devServer(): Array<PluginOption> {
6262
try {
6363
const serverEntry: {
6464
default: { fetch: (req: Request) => Promise<Response> };
65-
} = await serverEnv.runner.import("./src/entry-server.tsx");
65+
} = await serverEnv.runner.import(serverEntryPath);
6666

6767
const webRes = await serverEntry.default.fetch(webReq);
6868

packages/start/src/config/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ export function solidStart(options?: SolidStartOptions): Array<PluginOption> {
7070
serverFunctionsPlugin({
7171
manifest: VIRTUAL_MODULES.serverFnManifest,
7272
runtime: {
73-
server: '@solidjs/start/fns/server',
74-
client: '@solidjs/start/fns/client',
73+
server: "@solidjs/start/fns/server",
74+
client: "@solidjs/start/fns/client",
7575
},
7676
filter: options?.serverFunctions?.filter,
7777
}),
@@ -136,7 +136,7 @@ export function solidStart(options?: SolidStartOptions): Array<PluginOption> {
136136
manifest: true,
137137
copyPublicDir: false,
138138
rollupOptions: {
139-
input: "~/entry-server.tsx",
139+
input: handlers.server,
140140
},
141141
outDir: "dist/server",
142142
commonjsOptions: {
@@ -236,7 +236,7 @@ export function solidStart(options?: SolidStartOptions): Array<PluginOption> {
236236
(globalThis as any).START_CLIENT_OUT_DIR = options.dir;
237237
},
238238
},
239-
devServer(),
239+
devServer(handlers.server),
240240
solid({
241241
...start.solid,
242242
ssr: true,

pnpm-lock.yaml

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)