From fd2a0575e2ad9177f2bfeed585cbe0981fce317f Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Fri, 2 Jun 2023 08:28:01 +0200 Subject: [PATCH] chore: replace dedupe plugin with resolve.dedupe --- packages/vitest/src/constants.ts | 16 ++++++++++++++++ packages/vitest/src/node/plugins/index.ts | 4 ++-- .../vitest/src/node/plugins/vitestResolver.ts | 19 ------------------- packages/vitest/src/node/plugins/workspace.ts | 4 ++-- 4 files changed, 20 insertions(+), 23 deletions(-) delete mode 100644 packages/vitest/src/node/plugins/vitestResolver.ts diff --git a/packages/vitest/src/constants.ts b/packages/vitest/src/constants.ts index 45be55753db8..6c5b0d232532 100644 --- a/packages/vitest/src/constants.ts +++ b/packages/vitest/src/constants.ts @@ -60,3 +60,19 @@ export const globalApis = [ 'beforeEach', 'afterEach', ] + +export const vitestPackages = [ + 'vitest', + 'vite-node', + '@vitest/browser', + '@vitest/coverage-c8', + '@vitest/coverage-istanbul', + '@vitest/expect', + '@vitest/runner', + '@vitest/snapshot', + '@vitest/spy', + '@vitest/ui', + '@vitest/utils', + '@vitest/web-worker', + '@vitest/ws-client', +] diff --git a/packages/vitest/src/node/plugins/index.ts b/packages/vitest/src/node/plugins/index.ts index a43dab037c6f..ddc6e337877c 100644 --- a/packages/vitest/src/node/plugins/index.ts +++ b/packages/vitest/src/node/plugins/index.ts @@ -7,13 +7,13 @@ import { ensurePackageInstalled } from '../pkg' import { resolveApiServerConfig } from '../config' import { Vitest } from '../core' import { generateScopedClassName } from '../../integrations/css/css-modules' +import { vitestPackages } from '../../constants' import { EnvReplacerPlugin } from './envReplacer' import { GlobalSetupPlugin } from './globalSetup' import { CSSEnablerPlugin } from './cssEnabler' import { CoverageTransform } from './coverageTransform' import { MocksPlugin } from './mocks' import { resolveOptimizerConfig } from './utils' -import { VitestResolver } from './vitestResolver' export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest('test')): Promise { const userConfig = deepMerge({}, options) as UserConfig @@ -105,6 +105,7 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest('t // by default Vite resolves `module` field, which not always a native ESM module // setting this option can bypass that and fallback to cjs version mainFields: [], + dedupe: vitestPackages, alias: testConfig.alias, conditions: ['node'], // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error @@ -209,7 +210,6 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest('t ? await UIPlugin() : null, MocksPlugin(), - VitestResolver(ctx), ] .filter(notNullish) } diff --git a/packages/vitest/src/node/plugins/vitestResolver.ts b/packages/vitest/src/node/plugins/vitestResolver.ts deleted file mode 100644 index 354d46b10b79..000000000000 --- a/packages/vitest/src/node/plugins/vitestResolver.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Plugin } from 'vite' -import { join } from 'pathe' -import type { Vitest } from '../core' - -export function VitestResolver(ctx: Vitest): Plugin { - return { - name: 'vitest:resolve-root', - enforce: 'pre', - async resolveId(id) { - if (id === 'vitest' || id.startsWith('@vitest/')) { - return this.resolve( - id, - join(ctx.config.root, 'index.html'), - { skipSelf: true }, - ) - } - }, - } -} diff --git a/packages/vitest/src/node/plugins/workspace.ts b/packages/vitest/src/node/plugins/workspace.ts index f9fd4dda3da7..fd7583d9375c 100644 --- a/packages/vitest/src/node/plugins/workspace.ts +++ b/packages/vitest/src/node/plugins/workspace.ts @@ -5,13 +5,13 @@ import { generateScopedClassName } from '../../integrations/css/css-modules' import { deepMerge } from '../../utils/base' import type { WorkspaceProject } from '../workspace' import type { UserWorkspaceConfig } from '../../types' +import { vitestPackages } from '../../constants' import { CoverageTransform } from './coverageTransform' import { CSSEnablerPlugin } from './cssEnabler' import { EnvReplacerPlugin } from './envReplacer' import { GlobalSetupPlugin } from './globalSetup' import { MocksPlugin } from './mocks' import { resolveOptimizerConfig } from './utils' -import { VitestResolver } from './vitestResolver' interface WorkspaceOptions extends UserWorkspaceConfig { root?: string @@ -76,6 +76,7 @@ export function WorkspaceVitestPlugin(project: WorkspaceProject, options: Worksp // setting this option can bypass that and fallback to cjs version mainFields: [], alias: testConfig.alias, + dedupe: vitestPackages, conditions: ['node'], // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error // @ts-ignore we support Vite ^3.0, but browserField is available in Vite ^3.2 @@ -151,6 +152,5 @@ export function WorkspaceVitestPlugin(project: WorkspaceProject, options: Worksp CoverageTransform(project.ctx), GlobalSetupPlugin(project, project.ctx.logger), MocksPlugin(), - VitestResolver(project.ctx), ] }