Skip to content

Commit a079fbc

Browse files
committed
fix: 修复生成的 icejs 项目不支持 constants 的问题, fixes alibaba#1259
1 parent 7d3048a commit a079fbc

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

modules/code-generator/.versionrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"releaseCommitMessageFormat": "chore(release): code-generator - {{currentTag}}"
3+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import {
2+
CLASS_DEFINE_CHUNK_NAME,
3+
COMMON_CHUNK_NAME,
4+
DEFAULT_LINK_AFTER,
5+
} from '../../../const/generator';
6+
7+
import {
8+
BuilderComponentPlugin,
9+
BuilderComponentPluginFactory,
10+
ChunkType,
11+
FileType,
12+
ICodeStruct,
13+
} from '../../../types';
14+
15+
export interface PluginConfig {
16+
fileType: string;
17+
}
18+
19+
const pluginFactory: BuilderComponentPluginFactory<PluginConfig> = (config?) => {
20+
const cfg: PluginConfig = {
21+
fileType: FileType.JSX,
22+
...config,
23+
};
24+
25+
const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => {
26+
const next: ICodeStruct = {
27+
...pre,
28+
};
29+
30+
next.chunks.push({
31+
type: ChunkType.STRING,
32+
fileType: cfg.fileType,
33+
name: COMMON_CHUNK_NAME.InternalDepsImport,
34+
content: "import __$$constants from '../../constants';",
35+
linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport],
36+
});
37+
38+
next.chunks.push({
39+
type: ChunkType.STRING,
40+
fileType: cfg.fileType,
41+
name: CLASS_DEFINE_CHUNK_NAME.InsVar,
42+
content: `
43+
get constants() {
44+
return __$$constants || {};
45+
}
46+
`,
47+
linkAfter: [...DEFAULT_LINK_AFTER[CLASS_DEFINE_CHUNK_NAME.InsVar]],
48+
});
49+
50+
return next;
51+
};
52+
return plugin;
53+
};
54+
55+
export default pluginFactory;

modules/code-generator/src/solutions/icejs.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import containerInitState from '../plugins/component/react/containerInitState';
88
import containerInjectContext from '../plugins/component/react/containerInjectContext';
99
import containerInjectUtils from '../plugins/component/react/containerInjectUtils';
1010
import containerInjectDataSourceEngine from '../plugins/component/react/containerInjectDataSourceEngine';
11+
import containerInjectConstants from '../plugins/component/react/containerInjectConstants';
1112
import containerInjectI18n from '../plugins/component/react/containerInjectI18n';
1213
import containerLifeCycle from '../plugins/component/react/containerLifeCycle';
1314
import containerMethod from '../plugins/component/react/containerMethod';
@@ -22,7 +23,7 @@ import icejs from '../plugins/project/framework/icejs';
2223

2324
import { prettier } from '../postprocessor';
2425

25-
export interface IceJsProjectBuilderOptions extends IProjectBuilderOptions {}
26+
export type IceJsProjectBuilderOptions = IProjectBuilderOptions;
2627

2728
export default function createIceJsProjectBuilder(
2829
options?: IceJsProjectBuilderOptions,
@@ -65,6 +66,7 @@ export default function createIceJsProjectBuilder(
6566
containerInjectUtils(),
6667
containerInjectDataSourceEngine(),
6768
containerInjectI18n(),
69+
containerInjectConstants(),
6870
containerInitState(),
6971
containerLifeCycle(),
7072
containerMethod(),

0 commit comments

Comments
 (0)