From be93032fdebd9d1b47192022f4b7d25babed2169 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 1 Jun 2023 09:43:08 +0200 Subject: [PATCH] fix(vite-node): deps.inline doesn't work (#3485) --- packages/vite-node/src/externalize.ts | 2 +- test/core/projects/inline-lib/index.js | 4 ++++ test/core/projects/inline-lib/package.json | 4 ++++ test/core/test/inlined.test.ts | 7 +++++++ test/core/vitest.config.ts | 2 ++ 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 test/core/projects/inline-lib/index.js create mode 100644 test/core/projects/inline-lib/package.json create mode 100644 test/core/test/inlined.test.ts diff --git a/packages/vite-node/src/externalize.ts b/packages/vite-node/src/externalize.ts index 2d4f81f3a637..e4056f3a8784 100644 --- a/packages/vite-node/src/externalize.ts +++ b/packages/vite-node/src/externalize.ts @@ -139,7 +139,7 @@ function matchExternalizePattern(id: string, moduleDirectories: string[], patter return true for (const ex of patterns) { if (typeof ex === 'string') { - if (moduleDirectories.some(dir => id.includes(join(dir, id)))) + if (moduleDirectories.some(dir => id.includes(join(dir, ex)))) return true } else { diff --git a/test/core/projects/inline-lib/index.js b/test/core/projects/inline-lib/index.js new file mode 100644 index 000000000000..b1d53e20c67b --- /dev/null +++ b/test/core/projects/inline-lib/index.js @@ -0,0 +1,4 @@ +export default function () { + // module doesn't exist in Node.js ESM, but exists in vite-node + return typeof module +} diff --git a/test/core/projects/inline-lib/package.json b/test/core/projects/inline-lib/package.json new file mode 100644 index 000000000000..07aec65d5a4f --- /dev/null +++ b/test/core/projects/inline-lib/package.json @@ -0,0 +1,4 @@ +{ + "type": "module", + "main": "index.js" +} diff --git a/test/core/test/inlined.test.ts b/test/core/test/inlined.test.ts new file mode 100644 index 000000000000..fdf79af2bb94 --- /dev/null +++ b/test/core/test/inlined.test.ts @@ -0,0 +1,7 @@ +// @ts-expect-error not typed lib +import typeOfModule from 'inline-lib' +import { expect, test } from 'vitest' + +test('inline lib has exports injected even though it is ESM', () => { + expect(typeOfModule()).toBe('object') +}) diff --git a/test/core/vitest.config.ts b/test/core/vitest.config.ts index efae4016d4a8..44f1710f9261 100644 --- a/test/core/vitest.config.ts +++ b/test/core/vitest.config.ts @@ -36,6 +36,7 @@ export default defineConfig({ { find: '#', replacement: resolve(__dirname, 'src') }, { find: '$', replacement: 'src' }, { find: /^custom-lib$/, replacement: resolve(__dirname, 'projects', 'custom-lib') }, + { find: /^inline-lib$/, replacement: resolve(__dirname, 'projects', 'inline-lib') }, ], }, test: { @@ -63,6 +64,7 @@ export default defineConfig({ }, deps: { external: ['tinyspy', /src\/external/], + inline: ['inline-lib'], moduleDirectories: ['node_modules', 'projects', 'packages'], }, alias: [