From 3c165617bfe226f376ab009b1ddd795133144027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Thu, 24 Nov 2022 14:02:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9A=84=20icejs=20=E9=A1=B9=E7=9B=AE=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20constants=20=E7=9A=84=E9=97=AE=E9=A2=98,=20fixes=20?= =?UTF-8?q?#1259?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/code-generator/.versionrc | 3 + .../react/containerInjectConstants.ts | 55 +++++++++++++++++++ modules/code-generator/src/solutions/icejs.ts | 4 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 modules/code-generator/.versionrc create mode 100644 modules/code-generator/src/plugins/component/react/containerInjectConstants.ts diff --git a/modules/code-generator/.versionrc b/modules/code-generator/.versionrc new file mode 100644 index 000000000..a41c11e26 --- /dev/null +++ b/modules/code-generator/.versionrc @@ -0,0 +1,3 @@ +{ + "releaseCommitMessageFormat": "chore(release): code-generator - {{currentTag}}" +} \ No newline at end of file diff --git a/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts b/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts new file mode 100644 index 000000000..92cd4a392 --- /dev/null +++ b/modules/code-generator/src/plugins/component/react/containerInjectConstants.ts @@ -0,0 +1,55 @@ +import { + CLASS_DEFINE_CHUNK_NAME, + COMMON_CHUNK_NAME, + DEFAULT_LINK_AFTER, +} from '../../../const/generator'; + +import { + BuilderComponentPlugin, + BuilderComponentPluginFactory, + ChunkType, + FileType, + ICodeStruct, +} from '../../../types'; + +export interface PluginConfig { + fileType: string; +} + +const pluginFactory: BuilderComponentPluginFactory = (config?) => { + const cfg: PluginConfig = { + fileType: FileType.JSX, + ...config, + }; + + const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => { + const next: ICodeStruct = { + ...pre, + }; + + next.chunks.push({ + type: ChunkType.STRING, + fileType: cfg.fileType, + name: COMMON_CHUNK_NAME.InternalDepsImport, + content: "import __$$constants from '../../constants';", + linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], + }); + + next.chunks.push({ + type: ChunkType.STRING, + fileType: cfg.fileType, + name: CLASS_DEFINE_CHUNK_NAME.InsVar, + content: ` + get constants() { + return __$$constants || {}; + } + `, + linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]], + }); + + return next; + }; + return plugin; +}; + +export default pluginFactory; diff --git a/modules/code-generator/src/solutions/icejs.ts b/modules/code-generator/src/solutions/icejs.ts index 0a9d5c60d..85ce7c1f5 100644 --- a/modules/code-generator/src/solutions/icejs.ts +++ b/modules/code-generator/src/solutions/icejs.ts @@ -8,6 +8,7 @@ import containerInitState from '../plugins/component/react/containerInitState'; import containerInjectContext from '../plugins/component/react/containerInjectContext'; import containerInjectUtils from '../plugins/component/react/containerInjectUtils'; import containerInjectDataSourceEngine from '../plugins/component/react/containerInjectDataSourceEngine'; +import containerInjectConstants from '../plugins/component/react/containerInjectConstants'; import containerInjectI18n from '../plugins/component/react/containerInjectI18n'; import containerLifeCycle from '../plugins/component/react/containerLifeCycle'; import containerMethod from '../plugins/component/react/containerMethod'; @@ -22,7 +23,7 @@ import icejs from '../plugins/project/framework/icejs'; import { prettier } from '../postprocessor'; -export interface IceJsProjectBuilderOptions extends IProjectBuilderOptions {} +export type IceJsProjectBuilderOptions = IProjectBuilderOptions; export default function createIceJsProjectBuilder( options?: IceJsProjectBuilderOptions, @@ -65,6 +66,7 @@ export default function createIceJsProjectBuilder( containerInjectUtils(), containerInjectDataSourceEngine(), containerInjectI18n(), + containerInjectConstants(), containerInitState(), containerLifeCycle(), containerMethod(),