From 17f830701a0d6f2942133c6bf764bab00103377e Mon Sep 17 00:00:00 2001 From: Franz Bendezu <63468778+franz-bendezu@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:26:23 +0000 Subject: [PATCH 1/5] refactor: extract plugin virtual prefix and name from style plugins --- packages/vite-plugin/src/stylesPlugin.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/vite-plugin/src/stylesPlugin.ts b/packages/vite-plugin/src/stylesPlugin.ts index ba89fd5..d298fb7 100644 --- a/packages/vite-plugin/src/stylesPlugin.ts +++ b/packages/vite-plugin/src/stylesPlugin.ts @@ -9,6 +9,9 @@ function isSubdir (root: string, test: string) { return relative && !relative.startsWith('..') && !path.isAbsolute(relative) } +const PLUGIN_VIRTUAL_PREFIX = "\0" +const PLUGIN_VIRTUAL_NAME = "plugin-vuetify" + export function stylesPlugin (options: Options): Plugin { const vuetifyBase = resolveVuetifyBase() @@ -36,7 +39,7 @@ export function stylesPlugin (options: Options): Plugin { ) ) { if (options.styles === 'none') { - return '\0__void__' + return `${PLUGIN_VIRTUAL_PREFIX}__void__` } else if (options.styles === 'sass') { const target = source.replace(/\.css$/, '.sass') return this.resolve(target, importer, { skipSelf: true, custom }) @@ -51,12 +54,12 @@ export function stylesPlugin (options: Options): Plugin { tempFiles.set(file, contents) - return `\0plugin-vuetify:${file}` + return `${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}:${file}` } - } else if (source.startsWith('/plugin-vuetify:')) { - return '\0' + source.slice(1) - } else if (source.startsWith('/@id/__x00__plugin-vuetify:')) { - return '\0' + source.slice(12) + } else if (source.startsWith(`/${PLUGIN_VIRTUAL_NAME}:`)) { + return PLUGIN_VIRTUAL_PREFIX + source.slice(1) + } else if (source.startsWith(`/@id/__x00__${PLUGIN_VIRTUAL_NAME}:`)) { + return PLUGIN_VIRTUAL_PREFIX + source.slice(12) } return null @@ -64,12 +67,12 @@ export function stylesPlugin (options: Options): Plugin { load (id) { // When Vite is configured with `optimizeDeps.exclude: ['vuetify']`, the // received id contains a version hash (e.g. \0__void__?v=893fa859). - if (/^\0__void__(\?.*)?$/.test(id)) { + if (new RegExp(`^${PLUGIN_VIRTUAL_PREFIX}__void__(\\?.*)?$/`).test(id)) { return '' } - if (id.startsWith('\0plugin-vuetify')) { - const file = /^\0plugin-vuetify:(.*?)(\?.*)?$/.exec(id)![1] + if (id.startsWith(`${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}`)) { + const file = new RegExp(`^${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}:(.*?)(\\?.*)?$`).exec(id)![1] return tempFiles.get(file) } From 0e6f93bccfd6d682e5c7c1d40a99b52ae5a80978 Mon Sep 17 00:00:00 2001 From: Franz Bendezu <63468778+franz-bendezu@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:29:11 +0000 Subject: [PATCH 2/5] fix: change virtual prefix for nuxt compability --- packages/vite-plugin/src/stylesPlugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite-plugin/src/stylesPlugin.ts b/packages/vite-plugin/src/stylesPlugin.ts index d298fb7..37d6dec 100644 --- a/packages/vite-plugin/src/stylesPlugin.ts +++ b/packages/vite-plugin/src/stylesPlugin.ts @@ -9,7 +9,7 @@ function isSubdir (root: string, test: string) { return relative && !relative.startsWith('..') && !path.isAbsolute(relative) } -const PLUGIN_VIRTUAL_PREFIX = "\0" +const PLUGIN_VIRTUAL_PREFIX = "virtual:" const PLUGIN_VIRTUAL_NAME = "plugin-vuetify" export function stylesPlugin (options: Options): Plugin { From 38b0dc114a6bd63aaaf575161f510d0e8686bb7f Mon Sep 17 00:00:00 2001 From: Franz Bendezu <63468778+franz-bendezu@users.noreply.github.com> Date: Tue, 2 Jan 2024 09:38:05 -0500 Subject: [PATCH 3/5] fix: remove unnecessary slash from regex --- packages/vite-plugin/src/stylesPlugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite-plugin/src/stylesPlugin.ts b/packages/vite-plugin/src/stylesPlugin.ts index 37d6dec..83ddce1 100644 --- a/packages/vite-plugin/src/stylesPlugin.ts +++ b/packages/vite-plugin/src/stylesPlugin.ts @@ -67,7 +67,7 @@ export function stylesPlugin (options: Options): Plugin { load (id) { // When Vite is configured with `optimizeDeps.exclude: ['vuetify']`, the // received id contains a version hash (e.g. \0__void__?v=893fa859). - if (new RegExp(`^${PLUGIN_VIRTUAL_PREFIX}__void__(\\?.*)?$/`).test(id)) { + if (new RegExp(`^${PLUGIN_VIRTUAL_PREFIX}__void__(\\?.*)?$`).test(id)) { return '' } From 9790719c95f17addcd67332ba43ec06cbbe1eb0c Mon Sep 17 00:00:00 2001 From: Franz Bendezu <63468778+franz-bendezu@users.noreply.github.com> Date: Sun, 7 Jan 2024 02:42:47 +0000 Subject: [PATCH 4/5] refactor: create VIRTUAL_MODULE_ID constant for unify values --- packages/vite-plugin/src/stylesPlugin.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/vite-plugin/src/stylesPlugin.ts b/packages/vite-plugin/src/stylesPlugin.ts index 83ddce1..ff840f3 100644 --- a/packages/vite-plugin/src/stylesPlugin.ts +++ b/packages/vite-plugin/src/stylesPlugin.ts @@ -11,6 +11,7 @@ function isSubdir (root: string, test: string) { const PLUGIN_VIRTUAL_PREFIX = "virtual:" const PLUGIN_VIRTUAL_NAME = "plugin-vuetify" +const VIRTUAL_MODULE_ID = `${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}` export function stylesPlugin (options: Options): Plugin { const vuetifyBase = resolveVuetifyBase() @@ -54,7 +55,7 @@ export function stylesPlugin (options: Options): Plugin { tempFiles.set(file, contents) - return `${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}:${file}` + return `${VIRTUAL_MODULE_ID}:${file}` } } else if (source.startsWith(`/${PLUGIN_VIRTUAL_NAME}:`)) { return PLUGIN_VIRTUAL_PREFIX + source.slice(1) @@ -71,8 +72,8 @@ export function stylesPlugin (options: Options): Plugin { return '' } - if (id.startsWith(`${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}`)) { - const file = new RegExp(`^${PLUGIN_VIRTUAL_PREFIX}${PLUGIN_VIRTUAL_NAME}:(.*?)(\\?.*)?$`).exec(id)![1] + if (id.startsWith(`${VIRTUAL_MODULE_ID}`)) { + const file = new RegExp(`^${VIRTUAL_MODULE_ID}:(.*?)(\\?.*)?$`).exec(id)![1] return tempFiles.get(file) } From 678cec20fe80a3d05061a21127cb76bae9eabb2d Mon Sep 17 00:00:00 2001 From: Franz Bendezu <63468778+franz-bendezu@users.noreply.github.com> Date: Sun, 7 Jan 2024 03:07:22 +0000 Subject: [PATCH 5/5] feat: add support to direct url from nuxt via ssr --- packages/vite-plugin/src/stylesPlugin.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/vite-plugin/src/stylesPlugin.ts b/packages/vite-plugin/src/stylesPlugin.ts index ff840f3..9ec70a7 100644 --- a/packages/vite-plugin/src/stylesPlugin.ts +++ b/packages/vite-plugin/src/stylesPlugin.ts @@ -61,6 +61,8 @@ export function stylesPlugin (options: Options): Plugin { return PLUGIN_VIRTUAL_PREFIX + source.slice(1) } else if (source.startsWith(`/@id/__x00__${PLUGIN_VIRTUAL_NAME}:`)) { return PLUGIN_VIRTUAL_PREFIX + source.slice(12) + } else if (source.startsWith(`/${VIRTUAL_MODULE_ID}:`)) { + return source.slice(1) } return null