From 3a0ab6d4419afc5841ac5197d84eee0758d4fe28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Mon, 28 Nov 2022 16:40:44 +0800 Subject: [PATCH] fix: componentName can contain dot notation --- modules/code-generator/src/plugins/common/esmodule.ts | 4 ++-- modules/code-generator/src/utils/validate.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/code-generator/src/plugins/common/esmodule.ts b/modules/code-generator/src/plugins/common/esmodule.ts index ee28083d1..04dfd1ce2 100644 --- a/modules/code-generator/src/plugins/common/esmodule.ts +++ b/modules/code-generator/src/plugins/common/esmodule.ts @@ -16,7 +16,7 @@ import { IWithDependency, } from '../../types'; -import { isValidIdentifier } from '../../utils/validate'; +import { isValidIdentifier, isValidComponentName } from '../../utils/validate'; // TODO: main 这个信息到底怎么用,是不是外部包不需要使用? const DEP_MAIN_BLOCKLIST = ['lib', 'lib/index', 'es', 'es/index', 'main']; @@ -261,7 +261,7 @@ function buildPackageImport( if (!isValidIdentifier(name)) { throw new CodeGeneratorError(`Invalid Identifier [${name}]`); } - if (info.nodeIdentifier && !isValidIdentifier(info.nodeIdentifier)) { + if (info.nodeIdentifier && !isValidComponentName(info.nodeIdentifier)) { throw new CodeGeneratorError(`Invalid Identifier [${info.nodeIdentifier}]`); } }); diff --git a/modules/code-generator/src/utils/validate.ts b/modules/code-generator/src/utils/validate.ts index 4ee0d5b2a..8d6f9c0d1 100644 --- a/modules/code-generator/src/utils/validate.ts +++ b/modules/code-generator/src/utils/validate.ts @@ -2,6 +2,10 @@ export const isValidIdentifier = (name: string) => { return /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(name); }; +export const isValidComponentName = (name: string) => { + return /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF.]*$/.test(name); +}; + export const ensureValidClassName = (name: string) => { if (!isValidIdentifier(name)) { return `$${name.replace(/[^_$a-zA-Z0-9]/g, '')}`;