From 7afe95d785a9414b135d9ef0777fdd306d360abb Mon Sep 17 00:00:00 2001 From: bluwy Date: Thu, 18 Aug 2022 16:04:44 +0800 Subject: [PATCH 1/2] fix(import-analysis): escape quotes --- packages/vite/src/node/plugins/importAnalysis.ts | 4 +++- .../vite/src/node/plugins/importAnalysisBuild.ts | 13 +++++-------- .../glob-import/__tests__/glob-import.spec.ts | 12 ++++++++++++ "playground/glob-import/dir/quote\".js" | 1 + playground/glob-import/dir/quote'.js | 1 + 5 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 "playground/glob-import/dir/quote\".js" create mode 100644 playground/glob-import/dir/quote'.js diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index 7f9c6e7a3ac299..99b7016264b2bc 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -527,7 +527,9 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { rewriteDone = true } if (!rewriteDone) { - str().overwrite(start, end, isDynamicImport ? `'${url}'` : url, { + let rewrittenUrl = JSON.stringify(url) + if (!isDynamicImport) rewrittenUrl = rewrittenUrl.slice(1, -1) + str().overwrite(start, end, rewrittenUrl, { contentOnly: true }) } diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index dee652387bff3b..d78e4c3be77ba7 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -291,14 +291,11 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { rewriteDone = true } if (!rewriteDone) { - str().overwrite( - start, - end, - isDynamicImport ? `'${file}'` : file, - { - contentOnly: true - } - ) + let rewrittenUrl = JSON.stringify(file) + if (!isDynamicImport) rewrittenUrl = rewrittenUrl.slice(1, -1) + str().overwrite(start, end, rewrittenUrl, { + contentOnly: true + }) } } } diff --git a/playground/glob-import/__tests__/glob-import.spec.ts b/playground/glob-import/__tests__/glob-import.spec.ts index 68608875f3c429..df4cd5d547c26f 100644 --- a/playground/glob-import/__tests__/glob-import.spec.ts +++ b/playground/glob-import/__tests__/glob-import.spec.ts @@ -16,6 +16,12 @@ const filteredResult = { }, './foo.js': { msg: 'foo' + }, + "./quote'.js": { + msg: 'single-quote' + }, + './quote".js': { + msg: 'double-quote' } } @@ -62,6 +68,12 @@ const allResult = { '../baz.json': json }, msg: 'bar' + }, + "/dir/quote'.js": { + msg: 'single-quote' + }, + '/dir/quote".js': { + msg: 'double-quote' } } diff --git "a/playground/glob-import/dir/quote\".js" "b/playground/glob-import/dir/quote\".js" new file mode 100644 index 00000000000000..02e212f4b8445b --- /dev/null +++ "b/playground/glob-import/dir/quote\".js" @@ -0,0 +1 @@ +export const msg = 'double-quote' diff --git a/playground/glob-import/dir/quote'.js b/playground/glob-import/dir/quote'.js new file mode 100644 index 00000000000000..deb63c3bcad695 --- /dev/null +++ b/playground/glob-import/dir/quote'.js @@ -0,0 +1 @@ +export const msg = 'single-quote' From cfb106eb40a31ac183dce8ff243260465f70f354 Mon Sep 17 00:00:00 2001 From: bluwy Date: Thu, 18 Aug 2022 16:27:27 +0800 Subject: [PATCH 2/2] chore: remove double quotes file for windows --- playground/glob-import/__tests__/glob-import.spec.ts | 6 ------ "playground/glob-import/dir/quote\".js" | 1 - 2 files changed, 7 deletions(-) delete mode 100644 "playground/glob-import/dir/quote\".js" diff --git a/playground/glob-import/__tests__/glob-import.spec.ts b/playground/glob-import/__tests__/glob-import.spec.ts index df4cd5d547c26f..078ac0cdd0a6e1 100644 --- a/playground/glob-import/__tests__/glob-import.spec.ts +++ b/playground/glob-import/__tests__/glob-import.spec.ts @@ -19,9 +19,6 @@ const filteredResult = { }, "./quote'.js": { msg: 'single-quote' - }, - './quote".js': { - msg: 'double-quote' } } @@ -71,9 +68,6 @@ const allResult = { }, "/dir/quote'.js": { msg: 'single-quote' - }, - '/dir/quote".js': { - msg: 'double-quote' } } diff --git "a/playground/glob-import/dir/quote\".js" "b/playground/glob-import/dir/quote\".js" deleted file mode 100644 index 02e212f4b8445b..00000000000000 --- "a/playground/glob-import/dir/quote\".js" +++ /dev/null @@ -1 +0,0 @@ -export const msg = 'double-quote'