diff --git a/.changeset/warm-cats-juggle.md b/.changeset/warm-cats-juggle.md new file mode 100644 index 000000000..25d5ec16f --- /dev/null +++ b/.changeset/warm-cats-juggle.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Support JavaScript projects whose app and client/server entries use `.jsx`. diff --git a/apps/fixtures/bare-js/package.json b/apps/fixtures/bare-js/package.json new file mode 100644 index 000000000..9e159d849 --- /dev/null +++ b/apps/fixtures/bare-js/package.json @@ -0,0 +1,18 @@ +{ + "name": "fixture-bare-js", + "private": true, + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build" + }, + "dependencies": { + "@solidjs/start": "workspace:*", + "nitro": "^3.0.260610-beta", + "solid-js": "^1.9.11", + "vite": "^8.0.0" + }, + "engines": { + "node": ">=24" + } +} diff --git a/apps/fixtures/bare-js/src/app.jsx b/apps/fixtures/bare-js/src/app.jsx new file mode 100644 index 000000000..e389f8013 --- /dev/null +++ b/apps/fixtures/bare-js/src/app.jsx @@ -0,0 +1,14 @@ +import { createSignal } from "solid-js"; + +export default function App() { + const [count, setCount] = createSignal(0); + + return ( +
+

Hello world!

+ +
+ ); +} diff --git a/apps/fixtures/bare-js/src/entry-client.jsx b/apps/fixtures/bare-js/src/entry-client.jsx new file mode 100644 index 000000000..9c6948397 --- /dev/null +++ b/apps/fixtures/bare-js/src/entry-client.jsx @@ -0,0 +1,4 @@ +// @refresh reload +import { mount, StartClient } from "@solidjs/start/client"; + +mount(() => , document.getElementById("app")); diff --git a/apps/fixtures/bare-js/src/entry-server.jsx b/apps/fixtures/bare-js/src/entry-server.jsx new file mode 100644 index 000000000..f28c4d8f9 --- /dev/null +++ b/apps/fixtures/bare-js/src/entry-server.jsx @@ -0,0 +1,20 @@ +// @refresh reload +import { createHandler, StartServer } from "@solidjs/start/server"; + +export default createHandler(() => ( + ( + + + + + {assets} + + +
{children}
+ {scripts} + + + )} + /> +)); diff --git a/apps/fixtures/bare-js/vite.config.js b/apps/fixtures/bare-js/vite.config.js new file mode 100644 index 000000000..bd727617b --- /dev/null +++ b/apps/fixtures/bare-js/vite.config.js @@ -0,0 +1,7 @@ +import { nitro } from "nitro/vite"; +import { defineConfig } from "vite"; +import { solidStart } from "../../../packages/start/src/config/index.ts"; + +export default defineConfig({ + plugins: [solidStart(), nitro()], +}); diff --git a/packages/start/src/config/dev-server.ts b/packages/start/src/config/dev-server.ts index e1d4aa188..3a5ac418a 100644 --- a/packages/start/src/config/dev-server.ts +++ b/packages/start/src/config/dev-server.ts @@ -10,7 +10,7 @@ import { } from "vite"; import { VITE_ENVIRONMENTS } from "./constants.ts"; -export function devServer(): Array { +export function devServer(serverEntryPath: string): Array { return [ { name: "solid-start-dev-server", @@ -62,7 +62,7 @@ export function devServer(): Array { try { const serverEntry: { default: { fetch: (req: Request) => Promise }; - } = await serverEnv.runner.import("./src/entry-server.tsx"); + } = await serverEnv.runner.import(serverEntryPath); const webRes = await serverEntry.default.fetch(webReq); diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index b40c21ddb..f8a574e9d 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -70,8 +70,8 @@ export function solidStart(options?: SolidStartOptions): Array { serverFunctionsPlugin({ manifest: VIRTUAL_MODULES.serverFnManifest, runtime: { - server: '@solidjs/start/fns/server', - client: '@solidjs/start/fns/client', + server: "@solidjs/start/fns/server", + client: "@solidjs/start/fns/client", }, filter: options?.serverFunctions?.filter, }), @@ -136,7 +136,7 @@ export function solidStart(options?: SolidStartOptions): Array { manifest: true, copyPublicDir: false, rollupOptions: { - input: "~/entry-server.tsx", + input: handlers.server, }, outDir: "dist/server", commonjsOptions: { @@ -236,7 +236,7 @@ export function solidStart(options?: SolidStartOptions): Array { (globalThis as any).START_CLIENT_OUT_DIR = options.dir; }, }, - devServer(), + devServer(handlers.server), solid({ ...start.solid, ssr: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5d401adf..b7201efa1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,21 @@ importers: specifier: ^8.0.0 version: 8.1.4(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.7.0)(terser@5.46.0) + apps/fixtures/bare-js: + dependencies: + '@solidjs/start': + specifier: workspace:* + version: link:../../../packages/start + nitro: + specifier: ^3.0.260610-beta + version: 3.0.260610-beta(chokidar@5.0.0)(dotenv@17.3.1)(giget@2.0.0)(ioredis@5.10.0)(jiti@2.7.0)(lru-cache@11.2.7)(vite@8.1.4(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.7.0)(terser@5.46.0)) + solid-js: + specifier: ^1.9.11 + version: 1.9.11 + vite: + specifier: ^8.0.0 + version: 8.1.4(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.7.0)(terser@5.46.0) + apps/fixtures/basic: dependencies: '@solidjs/meta':