Improve file name to component name conversion, fix #2843

pull/2999/head
Ilya Semenov 5 years ago
parent 593de0e3f3
commit 181f60d4f8

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

Loading…
Cancel
Save