From 4abdd4ebd41ece3a63ee124f889c3e65379385b5 Mon Sep 17 00:00:00 2001 From: Wei Zhu Date: Fri, 3 Jan 2020 18:25:58 +0800 Subject: [PATCH] Fix module id conflict on a case insensitive OS Suppose we have to files named `date.js` and `Date.js`, `makeUnique` treats these two files are different currently. But on a case insensitive OS, they are the same file. The commit try to fix the problem. --- src/utils/renderNamePattern.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/utils/renderNamePattern.ts b/src/utils/renderNamePattern.ts index 6734f202fc8..50a34c0043d 100644 --- a/src/utils/renderNamePattern.ts +++ b/src/utils/renderNamePattern.ts @@ -31,12 +31,15 @@ export function renderNamePattern( } export function makeUnique(name: string, existingNames: Record) { - if (name in existingNames === false) return name; - - const ext = extname(name); - name = name.substr(0, name.length - ext.length); - let uniqueName, - uniqueIndex = 1; - while (existingNames[(uniqueName = name + ++uniqueIndex + ext)]); - return uniqueName; + for (const existingName of Object.keys(existingNames)) { + if (name.toLowerCase() === existingName.toLowerCase()) { + const ext = extname(name); + name = name.substr(0, name.length - ext.length); + let uniqueName, + uniqueIndex = 1; + while (existingNames[(uniqueName = name + ++uniqueIndex + ext)]); + return uniqueName; + } + } + return name; }