diff --git a/src/compiler/compile/index.ts b/src/compiler/compile/index.ts index 3f4a3eeb32..896f235c61 100644 --- a/src/compiler/compile/index.ts +++ b/src/compiler/compile/index.ts @@ -60,17 +60,25 @@ function get_name(filename: string) { // eslint-disable-next-line no-useless-escape const parts = filename.split(/[\/\\]/); - if (parts.length > 1 && /^index\.\w+/.test(parts[parts.length - 1])) { - parts.pop(); + if (parts.length > 1) { + const index_match = parts[parts.length - 1].match(/^index(\.\w+)/); + if (index_match) { + parts.pop(); + parts[parts.length - 1] += index_match[1]; + } } const base = parts.pop() - .replace(/\..+/, "") + .replace(/\.[^.]+$/, "") .replace(/[^a-zA-Z_$0-9]+/g, '_') .replace(/^_/, '') .replace(/_$/, '') .replace(/^(\d)/, '_$1'); + if (!base) { + throw new Error(`Could not derive component name from file ${filename}`); + } + return base[0].toUpperCase() + base.slice(1); }