From 75a793d9c463b9a1a7bdd02200406dd58e8f9afc Mon Sep 17 00:00:00 2001 From: Max Beatty Date: Mon, 12 Jul 2021 13:12:12 -0700 Subject: [PATCH 1/3] feat: allow use in workspaces previously, vite-jest assumed process.cwd() would contain node_modules in workspace environments, a parent directory may contain node_modules now, vite-jest will work in either setup --- packages/vite-jest/bin/vite-jest.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vite-jest/bin/vite-jest.js b/packages/vite-jest/bin/vite-jest.js index 9b6e4e5..55866e8 100755 --- a/packages/vite-jest/bin/vite-jest.js +++ b/packages/vite-jest/bin/vite-jest.js @@ -7,8 +7,9 @@ import { createRequire } from 'module' const require = createRequire(import.meta.url) const jestPath = require.resolve('jest/bin/jest') +const vitePath = require.resolve('vite'); // => vite/dist/node/index.js -const viteClientDirectory = path.join(process.cwd(), './node_modules/vite/dist/client') +const viteClientDirectory = path.resolve(path.dirname(vitePath), '../client'); fs.writeFileSync(path.join(viteClientDirectory, 'package.json'), JSON.stringify({ type: "module" })) execa.sync('node', [ From ecda88459b807fc84040ab454d730efb6b358666 Mon Sep 17 00:00:00 2001 From: Max Beatty Date: Mon, 12 Jul 2021 14:12:02 -0700 Subject: [PATCH 2/3] fix: remove workaround fixed in vitejs/vite#4061 and released v2.4.0 --- packages/vite-jest/bin/vite-jest.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/vite-jest/bin/vite-jest.js b/packages/vite-jest/bin/vite-jest.js index 55866e8..766baf9 100755 --- a/packages/vite-jest/bin/vite-jest.js +++ b/packages/vite-jest/bin/vite-jest.js @@ -7,10 +7,6 @@ import { createRequire } from 'module' const require = createRequire(import.meta.url) const jestPath = require.resolve('jest/bin/jest') -const vitePath = require.resolve('vite'); // => vite/dist/node/index.js - -const viteClientDirectory = path.resolve(path.dirname(vitePath), '../client'); -fs.writeFileSync(path.join(viteClientDirectory, 'package.json'), JSON.stringify({ type: "module" })) execa.sync('node', [ '--experimental-vm-modules', From ea4f26464f8ee4bf11be5f46a59fd4c977ed06dd Mon Sep 17 00:00:00 2001 From: Max Beatty Date: Mon, 12 Jul 2021 14:12:38 -0700 Subject: [PATCH 3/3] fix: client and env entries changed in vitejs/vite#4061 and released in v2.4.0 --- packages/vite-jest/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/vite-jest/index.js b/packages/vite-jest/index.js index f480cb2..ed0f160 100644 --- a/packages/vite-jest/index.js +++ b/packages/vite-jest/index.js @@ -26,6 +26,9 @@ export function fsPathFromId(id) { // TODO: use a createTransformer function to get rootDir const rootDir = process.cwd() +// https://github.com/vitejs/vite/blob/v2.4.2/packages/vite/src/node/constants.ts#L44-L46 +const CLIENT_ENTRY = require.resolve('vite/dist/client/client.mjs') +const ENV_ENTRY = require.resolve('vite/dist/client/env.mjs') async function processAsync(src, filepath) { const result = await viteServer.transformRequest(filepath) @@ -56,9 +59,9 @@ async function processAsync(src, filepath) { // FIXME: Temporary workaround. // The root problem is that Jest can't resolve virtual files. // So it may be better to create on-disk placeholder files for virtual files. - mStr.overwrite(start, end, require.resolve('vite/dist/client/env.js')) + mStr.overwrite(start, end, ENV_ENTRY) } else if (url === '/@vite/client') { - mStr.overwrite(start, end, require.resolve('vite/dist/client/client.js')) + mStr.overwrite(start, end, CLIENT_ENTRY) } else if (url.startsWith('/')) { mStr.overwrite(start, end, path.join(rootDir, url)) }