From 115e7380298d9e5e7d5224619a8a595762c6d917 Mon Sep 17 00:00:00 2001 From: ygj6 Date: Tue, 6 Jul 2021 21:39:45 +0800 Subject: [PATCH 1/5] fix: __VITE_PRELOAD__ replacement error(#3051) --- packages/vite/src/node/plugins/importAnalysisBuild.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 98aecac489f838..0848ac1cb0ea01 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -26,7 +26,7 @@ const preloadMarkerRE = new RegExp(`"${preloadMarker}"`, 'g') */ function preload(baseModule: () => Promise<{}>, deps?: string[]) { // @ts-ignore - if (!__VITE_IS_MODERN__ || !deps) { + if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) { return baseModule() } @@ -262,7 +262,12 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { addDeps(normalizedFile) } - const markPos = code.indexOf(preloadMarker, end) + let markPos = code.indexOf(preloadMarker, end) + // fix issue #3051 + if (markPos == -1 && imports.length == 1) { + markPos = code.indexOf(preloadMarker) + } + if (markPos > 0) { s.overwrite( markPos - 1, @@ -271,7 +276,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { // preload when there are actual other deps. deps.size > 1 ? `[${[...deps].map((d) => JSON.stringify(d)).join(',')}]` - : `void 0` + : `[]` ) } } From c017efa18f257e36df3785de747312150ee33d33 Mon Sep 17 00:00:00 2001 From: ygj6 Date: Wed, 7 Jul 2021 15:27:40 +0800 Subject: [PATCH 2/5] fix: add preload test cases --- .../preload/__tests__/preload.spec.ts | 14 ++++++++++++++ packages/playground/preload/index.html | 8 ++++++++ packages/playground/preload/package.json | 19 +++++++++++++++++++ packages/playground/preload/router.js | 16 ++++++++++++++++ packages/playground/preload/src/App.vue | 6 ++++++ .../preload/src/components/About.vue | 10 ++++++++++ .../preload/src/components/Home.vue | 10 ++++++++++ packages/playground/preload/vite.config.js | 15 +++++++++++++++ 8 files changed, 98 insertions(+) create mode 100644 packages/playground/preload/__tests__/preload.spec.ts create mode 100644 packages/playground/preload/index.html create mode 100644 packages/playground/preload/package.json create mode 100644 packages/playground/preload/router.js create mode 100644 packages/playground/preload/src/App.vue create mode 100644 packages/playground/preload/src/components/About.vue create mode 100644 packages/playground/preload/src/components/Home.vue create mode 100644 packages/playground/preload/vite.config.js diff --git a/packages/playground/preload/__tests__/preload.spec.ts b/packages/playground/preload/__tests__/preload.spec.ts new file mode 100644 index 00000000000000..eaee5e306cd7c5 --- /dev/null +++ b/packages/playground/preload/__tests__/preload.spec.ts @@ -0,0 +1,14 @@ +import { isBuild } from '../../testUtils' + +test('should have no 404s', () => { + browserLogs.forEach((msg) => { + expect(msg).not.toMatch('404') + }) +}) + +if (isBuild) { + test('dynamic import', async () => { + let appHtml = await page.content() + expect(appHtml).toMatch('This is home page.') + }) +} diff --git a/packages/playground/preload/index.html b/packages/playground/preload/index.html new file mode 100644 index 00000000000000..affed21f9791cf --- /dev/null +++ b/packages/playground/preload/index.html @@ -0,0 +1,8 @@ +
+ diff --git a/packages/playground/preload/package.json b/packages/playground/preload/package.json new file mode 100644 index 00000000000000..5f0ff00cb9f527 --- /dev/null +++ b/packages/playground/preload/package.json @@ -0,0 +1,19 @@ +{ + "name": "test-preload", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "debug": "node --inspect-brk ../../vite/bin/vite", + "serve": "vite preview" + }, + "dependencies": { + "vue": "^3.0.8", + "vue-router": "^4.0.6" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^1.0.0", + "@vue/compiler-sfc": "^3.0.8" + } +} diff --git a/packages/playground/preload/router.js b/packages/playground/preload/router.js new file mode 100644 index 00000000000000..a02628099bf264 --- /dev/null +++ b/packages/playground/preload/router.js @@ -0,0 +1,16 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +import Home from './src/components/Home.vue' + +const routes = [ + { path: '/', name: 'Home', component: Home }, + { + path: '/about', + name: 'About', + component: () => import('./src/components/About.vue') + } // Lazy load route component +] + +export default createRouter({ + routes, + history: createWebHashHistory() +}) diff --git a/packages/playground/preload/src/App.vue b/packages/playground/preload/src/App.vue new file mode 100644 index 00000000000000..f0550400dc4759 --- /dev/null +++ b/packages/playground/preload/src/App.vue @@ -0,0 +1,6 @@ + + + diff --git a/packages/playground/preload/src/components/About.vue b/packages/playground/preload/src/components/About.vue new file mode 100644 index 00000000000000..0721c7e53eb584 --- /dev/null +++ b/packages/playground/preload/src/components/About.vue @@ -0,0 +1,10 @@ + + + diff --git a/packages/playground/preload/src/components/Home.vue b/packages/playground/preload/src/components/Home.vue new file mode 100644 index 00000000000000..94d8850c47d28a --- /dev/null +++ b/packages/playground/preload/src/components/Home.vue @@ -0,0 +1,10 @@ + + + diff --git a/packages/playground/preload/vite.config.js b/packages/playground/preload/vite.config.js new file mode 100644 index 00000000000000..96fb82f51ed349 --- /dev/null +++ b/packages/playground/preload/vite.config.js @@ -0,0 +1,15 @@ +const vuePlugin = require('@vitejs/plugin-vue') + +module.exports = { + plugins: [vuePlugin()], + build: { + terserOptions: { + format: { + beautify: true + }, + compress: { + passes: 3 + } + } + } +} From 9fffc1d995254ac1c80091b9220b2ba81b6b88c3 Mon Sep 17 00:00:00 2001 From: ygj6 Date: Wed, 7 Jul 2021 20:51:00 +0800 Subject: [PATCH 3/5] Update packages/vite/src/node/plugins/importAnalysisBuild.ts Co-authored-by: patak --- packages/vite/src/node/plugins/importAnalysisBuild.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 0848ac1cb0ea01..9672c5446bb5b0 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -264,7 +264,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { let markPos = code.indexOf(preloadMarker, end) // fix issue #3051 - if (markPos == -1 && imports.length == 1) { + if (markPos === -1 && imports.length === 1) { markPos = code.indexOf(preloadMarker) } From 614bd8f78c263abb6a8bb59eb7806825c1561c7a Mon Sep 17 00:00:00 2001 From: ygj6 Date: Wed, 7 Jul 2021 20:54:07 +0800 Subject: [PATCH 4/5] Update packages/vite/src/node/plugins/importAnalysisBuild.ts Co-authored-by: patak --- packages/vite/src/node/plugins/importAnalysisBuild.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 9672c5446bb5b0..43991ebdf3c769 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -26,7 +26,7 @@ const preloadMarkerRE = new RegExp(`"${preloadMarker}"`, 'g') */ function preload(baseModule: () => Promise<{}>, deps?: string[]) { // @ts-ignore - if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) { + if (!__VITE_IS_MODERN__ || deps.length === 0) { return baseModule() } From 46b86115fb737db1429b940ce30d714c9e594c6c Mon Sep 17 00:00:00 2001 From: ygj6 Date: Thu, 8 Jul 2021 10:43:35 +0800 Subject: [PATCH 5/5] fix: revert commit --- packages/vite/src/node/plugins/importAnalysisBuild.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 43991ebdf3c769..9672c5446bb5b0 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -26,7 +26,7 @@ const preloadMarkerRE = new RegExp(`"${preloadMarker}"`, 'g') */ function preload(baseModule: () => Promise<{}>, deps?: string[]) { // @ts-ignore - if (!__VITE_IS_MODERN__ || deps.length === 0) { + if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) { return baseModule() }