From c765e3658aaf35077e7f13adc8e3acd52127c366 Mon Sep 17 00:00:00 2001 From: patak-dev Date: Thu, 31 Mar 2022 01:10:02 +0200 Subject: [PATCH] fix: dynamic import warning with @vite-ignore --- .../dynamic-import/__tests__/dynamic-import.spec.ts | 4 ++++ packages/playground/dynamic-import/nested/index.js | 2 +- packages/vite/src/node/plugins/importAnalysis.ts | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/playground/dynamic-import/__tests__/dynamic-import.spec.ts b/packages/playground/dynamic-import/__tests__/dynamic-import.spec.ts index 9f8276d5e4d855..c7157ef4652ec6 100644 --- a/packages/playground/dynamic-import/__tests__/dynamic-import.spec.ts +++ b/packages/playground/dynamic-import/__tests__/dynamic-import.spec.ts @@ -8,6 +8,10 @@ test('should load literal dynamic import', async () => { test('should load full dynamic import from public', async () => { await page.click('.qux') await untilUpdated(() => page.textContent('.view'), 'Qux view', true) + // No warning should be logged as we are using @vite-ignore + expect( + serverLogs.some((log) => log.includes('cannot be analyzed by vite')) + ).toBe(false) }) test('should load data URL of `blob:`', async () => { diff --git a/packages/playground/dynamic-import/nested/index.js b/packages/playground/dynamic-import/nested/index.js index 1a118ecc79051b..5518c56a35a2cc 100644 --- a/packages/playground/dynamic-import/nested/index.js +++ b/packages/playground/dynamic-import/nested/index.js @@ -35,7 +35,7 @@ document.querySelector('.mxd2').addEventListener('click', async () => { const test = { jss: '../mxd.js' } const ttest = test const view = 'mxd' - const { default: mxdDynamic } = await import(test.jss) + const { default: mxdDynamic } = await import(/*@vite-ignore*/ test.jss) text('.view', mxdStatic === mxdDynamic) }) diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index e7336ae4947677..f6d6c410411712 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -518,7 +518,10 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { } } else if (!importer.startsWith(clientDir) && !ssr) { // check @vite-ignore which suppresses dynamic import warning - const hasViteIgnore = /\/\*\s*@vite-ignore\s*\*\//.test(rawUrl) + const hasViteIgnore = /\/\*\s*@vite-ignore\s*\*\//.test( + // complete expression inside parens + source.slice(dynamicIndex + 1, end) + ) const url = rawUrl .replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '')