diff --git a/deno.lock b/deno.lock index 76a96c975eb..06c55fe0f04 100644 --- a/deno.lock +++ b/deno.lock @@ -3256,6 +3256,7 @@ "packages/plugin-vite": { "dependencies": [ "jsr:@deno/loader@~0.3.2", + "jsr:@marvinh-test/import-json@^0.0.1", "npm:@babel/core@^7.28.0", "npm:@babel/preset-react@^7.27.1", "npm:@prefresh/vite@^2.4.8", diff --git a/packages/plugin-vite/demo/routes/tests/dep_json.tsx b/packages/plugin-vite/demo/routes/tests/dep_json.tsx new file mode 100644 index 00000000000..8259fad7711 --- /dev/null +++ b/packages/plugin-vite/demo/routes/tests/dep_json.tsx @@ -0,0 +1,3 @@ +import { value } from "@marvinh-test/import-json"; + +export const handler = () => Response.json(value); diff --git a/packages/plugin-vite/deno.json b/packages/plugin-vite/deno.json index 9d92a22e5bf..e88b57bd78d 100644 --- a/packages/plugin-vite/deno.json +++ b/packages/plugin-vite/deno.json @@ -22,6 +22,7 @@ "@babel/core": "npm:@babel/core@^7.28.0", "@babel/preset-react": "npm:@babel/preset-react@^7.27.1", "@deno/loader": "jsr:@deno/loader@^0.3.2", + "@marvinh-test/import-json": "jsr:@marvinh-test/import-json@^0.0.1", "@prefresh/vite": "npm:@prefresh/vite@^2.4.8", "@tailwindcss/vite": "npm:@tailwindcss/vite@^4.1.12", "@types/babel__core": "npm:@types/babel__core@^7.20.5", diff --git a/packages/plugin-vite/src/plugins/deno.ts b/packages/plugin-vite/src/plugins/deno.ts index 960b0c7e293..46a026ed3b3 100644 --- a/packages/plugin-vite/src/plugins/deno.ts +++ b/packages/plugin-vite/src/plugins/deno.ts @@ -323,10 +323,7 @@ function babelTransform( isDev: boolean; }, ) { - if ( - !isJsMediaType(options.media) && - !/^https?:\/\//.test(options.id) - ) { + if (!isJsMediaType(options.media)) { return null; } diff --git a/packages/plugin-vite/tests/build_test.ts b/packages/plugin-vite/tests/build_test.ts index 2c18bd2f505..2ff0f5d5ebd 100644 --- a/packages/plugin-vite/tests/build_test.ts +++ b/packages/plugin-vite/tests/build_test.ts @@ -340,3 +340,24 @@ Deno.test({ sanitizeOps: false, sanitizeResources: false, }); + +Deno.test({ + name: "vite build - import json from jsr dependency", + fn: async () => { + await using res = await buildVite(DEMO_DIR); + + await withChildProcessServer( + { + cwd: res.tmp, + args: ["serve", "-A", "--port", "0", "_fresh/server.js"], + }, + async (address) => { + const res = await fetch(`${address}/tests/dep_json`); + const json = await res.json(); + expect(json.name).toEqual("@marvinh-test/import-json"); + }, + ); + }, + sanitizeOps: false, + sanitizeResources: false, +}); diff --git a/packages/plugin-vite/tests/dev_server_test.ts b/packages/plugin-vite/tests/dev_server_test.ts index a8e8fdd2ca3..92621feea87 100644 --- a/packages/plugin-vite/tests/dev_server_test.ts +++ b/packages/plugin-vite/tests/dev_server_test.ts @@ -238,3 +238,16 @@ Deno.test({ sanitizeResources: false, sanitizeOps: false, }); + +Deno.test({ + name: "vite dev - json from jsr dependency", + fn: async () => { + await withDevServer(DEMO_DIR, async (address) => { + const res = await fetch(`${address}/tests/dep_json`); + const json = await res.json(); + expect(json.name).toEqual("@marvinh-test/import-json"); + }); + }, + sanitizeResources: false, + sanitizeOps: false, +});