From 28acab3252a831434a1c1480610453c3b911dbd3 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Sun, 31 Jul 2022 13:16:39 +0300 Subject: [PATCH 1/2] feat: add deps.experimentalLoader option --- docs/config/index.md | 9 +++++++++ packages/vitest/src/node/config.ts | 2 ++ packages/vitest/src/node/pool.ts | 16 +++++++++------- packages/vitest/src/types/config.ts | 6 ++++++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/docs/config/index.md b/docs/config/index.md index 8c718eb95afb..46dc6b27abb8 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -102,6 +102,15 @@ When a dependency is a valid ESM package, try to guess the cjs version based on This might potentially cause some misalignment if a package has different logic in ESM and CJS mode. +#### deps.experimentalLoader + +- **Type:** `boolean` +- **Default:** `true` + +Use experimental loader to resolve imports inside `node_modules`, using Vite resolve algorithm. + +If disabled, your `alias` and `.resolveId` won't affect imports inside `node_modules` or `deps.external`. + #### deps.interopDefault - **Type:** `boolean` diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index bf445389f5c5..14ff0bac3fd3 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -129,6 +129,8 @@ export function resolveConfig( } } + resolved.deps.experimentalLoader ??= true + resolved.testNamePattern = resolved.testNamePattern ? resolved.testNamePattern instanceof RegExp ? resolved.testNamePattern diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index ef3f6d9af34d..164c39ccd9ce 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -42,13 +42,15 @@ export function createPool(ctx: Vitest): WorkerPool { maxThreads, minThreads, - execArgv: [ - '--require', - suppressLoaderWarningsPath, - '--experimental-loader', - loaderPath, - ...conditions || [], - ], + execArgv: ctx.config.deps.experimentalLoader + ? [ + '--require', + suppressLoaderWarningsPath, + '--experimental-loader', + loaderPath, + ...conditions || [], + ] + : [], } if (ctx.config.isolate) { diff --git a/packages/vitest/src/types/config.ts b/packages/vitest/src/types/config.ts index 43e53ada3c2e..c94b2cba5ba4 100644 --- a/packages/vitest/src/types/config.ts +++ b/packages/vitest/src/types/config.ts @@ -80,6 +80,12 @@ export interface InlineConfig { * @default false */ fallbackCJS?: boolean + + /** + * Use experimental loader to resolve imports inside node_modules using Vite resolve algorithm. + * @default true + */ + experimentalLoader?: boolean } /** From 71deb03583024487faf237ef72d15381b02a9644 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Sun, 31 Jul 2022 13:52:13 +0300 Subject: [PATCH 2/2] chore: update naming --- docs/config/index.md | 4 ++-- packages/vitest/src/node/config.ts | 2 +- packages/vitest/src/node/pool.ts | 2 +- packages/vitest/src/types/config.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/config/index.md b/docs/config/index.md index 46dc6b27abb8..9a72cc272957 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -102,12 +102,12 @@ When a dependency is a valid ESM package, try to guess the cjs version based on This might potentially cause some misalignment if a package has different logic in ESM and CJS mode. -#### deps.experimentalLoader +#### deps.registerNodeLoader - **Type:** `boolean` - **Default:** `true` -Use experimental loader to resolve imports inside `node_modules`, using Vite resolve algorithm. +Use [experimental Node loader](https://nodejs.org/api/esm.html#loaders) to resolve imports inside `node_modules`, using Vite resolve algorithm. If disabled, your `alias` and `.resolveId` won't affect imports inside `node_modules` or `deps.external`. diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index 14ff0bac3fd3..ac0c8cb2b3a0 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -129,7 +129,7 @@ export function resolveConfig( } } - resolved.deps.experimentalLoader ??= true + resolved.deps.registerNodeLoader ??= true resolved.testNamePattern = resolved.testNamePattern ? resolved.testNamePattern instanceof RegExp diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index 164c39ccd9ce..0f1b116b8755 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -42,7 +42,7 @@ export function createPool(ctx: Vitest): WorkerPool { maxThreads, minThreads, - execArgv: ctx.config.deps.experimentalLoader + execArgv: ctx.config.deps.registerNodeLoader ? [ '--require', suppressLoaderWarningsPath, diff --git a/packages/vitest/src/types/config.ts b/packages/vitest/src/types/config.ts index c94b2cba5ba4..a78cf232976d 100644 --- a/packages/vitest/src/types/config.ts +++ b/packages/vitest/src/types/config.ts @@ -82,10 +82,10 @@ export interface InlineConfig { fallbackCJS?: boolean /** - * Use experimental loader to resolve imports inside node_modules using Vite resolve algorithm. + * Use experimental Node loader to resolve imports inside node_modules using Vite resolve algorithm. * @default true */ - experimentalLoader?: boolean + registerNodeLoader?: boolean } /**