Skip to content

Commit d0c3c0f

Browse files
LeoYuanliujuping
authored andcommitted
feat: add styleImport plugin which handles style import of some fundamental materials
1 parent 48bc8d7 commit d0c3c0f

16 files changed

Lines changed: 172 additions & 11 deletions

File tree

modules/code-generator/example-schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@
6262
"router": "/"
6363
},
6464
"props": {
65-
"ref": "outterView",
65+
"ref": "outerView",
6666
"autoLoading": true
6767
},
6868
"fileName": "test",
6969
"state": {
70-
"text": "outter"
70+
"text": "outer"
7171
},
7272
"lifeCycles": {
7373
"componentDidMount": {

modules/code-generator/example-schema.json5

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@
6262
router: '/',
6363
},
6464
props: {
65-
ref: 'outterView',
65+
ref: 'outerView',
6666
autoLoading: true,
6767
},
6868
fileName: 'test',
6969
state: {
70-
text: 'outter',
70+
text: 'outer',
7171
},
7272
lifeCycles: {
7373
componentDidMount: {

modules/code-generator/src/index.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { createProjectBuilder } from './generator/ProjectBuilder';
88
import { createModuleBuilder } from './generator/ModuleBuilder';
99
import { createDiskPublisher } from './publisher/disk';
1010
import { createZipPublisher } from './publisher/zip';
11-
import createIceJsProjectBuilder, { plugins as reactPlugins } from './solutions/icejs';
11+
import createIceJsProjectBuilder, { plugins as icejsPlugins } from './solutions/icejs';
1212
import createIce3JsProjectBuilder, { plugins as icejs3Plugins } from './solutions/icejs3';
1313
import createRaxAppProjectBuilder, { plugins as raxPlugins } from './solutions/rax-app';
1414

@@ -19,6 +19,7 @@ import { COMMON_CHUNK_NAME, CLASS_DEFINE_CHUNK_NAME, DEFAULT_LINK_AFTER } from '
1919
// 引入通用插件组
2020
import esmodule from './plugins/common/esmodule';
2121
import requireUtils from './plugins/common/requireUtils';
22+
import styleImport from './plugins/common/styleImport';
2223

2324
import css from './plugins/component/style/css';
2425
import constants from './plugins/project/constants';
@@ -63,12 +64,7 @@ export default {
6364
esmodule,
6465
esModule: esmodule,
6566
requireUtils,
66-
},
67-
react: {
68-
...reactPlugins,
69-
},
70-
rax: {
71-
...raxPlugins,
67+
styleImport,
7268
},
7369
style: {
7470
css,
@@ -78,9 +74,22 @@ export default {
7874
i18n,
7975
utils,
8076
},
77+
icejs: {
78+
...icejsPlugins,
79+
},
8180
icejs3: {
8281
...icejs3Plugins,
8382
},
83+
rax: {
84+
...raxPlugins,
85+
},
86+
87+
/**
88+
* @deprecated please use icejs
89+
*/
90+
react: {
91+
...icejsPlugins,
92+
},
8493
},
8594
postprocessor: {
8695
prettier,
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import changeCase from 'change-case';
2+
import {
3+
FileType,
4+
BuilderComponentPluginFactory,
5+
BuilderComponentPlugin,
6+
ICodeStruct,
7+
IWithDependency,
8+
ChunkType,
9+
} from '../../types';
10+
11+
import { COMMON_CHUNK_NAME } from '../../const/generator';
12+
13+
const pluginFactory: BuilderComponentPluginFactory<unknown> = () => {
14+
const plugin: BuilderComponentPlugin = async (pre: ICodeStruct) => {
15+
const next: ICodeStruct = {
16+
...pre,
17+
};
18+
19+
const ir = next.ir as IWithDependency;
20+
const { chunks } = next;
21+
22+
if (ir && ir.deps && ir.deps.length > 0) {
23+
let lowcodeMaterialsStyleAdded = false;
24+
let nextStyleAddedMap: Record<string, boolean> = {};
25+
ir.deps.forEach((dep: any) => {
26+
if (dep.package === '@alifd/next' && !nextStyleAddedMap[dep.exportName]) {
27+
chunks.push({
28+
type: ChunkType.STRING,
29+
fileType: FileType.JSX,
30+
name: COMMON_CHUNK_NAME.InternalDepsImport,
31+
content: `import '@alifd/next/lib/${changeCase.paramCase(dep.exportName)}/style';`,
32+
linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport],
33+
});
34+
nextStyleAddedMap[dep.exportName] = true;
35+
} else if (dep.package === '@alilc/lowcode-materials' && !lowcodeMaterialsStyleAdded) {
36+
chunks.push({
37+
type: ChunkType.STRING,
38+
fileType: FileType.JSX,
39+
name: COMMON_CHUNK_NAME.InternalDepsImport,
40+
content: 'import \'@alilc/lowcode-materials/lib/style\';',
41+
linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport],
42+
});
43+
lowcodeMaterialsStyleAdded = true;
44+
}
45+
});
46+
}
47+
48+
return next;
49+
};
50+
51+
return plugin;
52+
};
53+
54+
export default pluginFactory;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IProjectBuilder, IProjectBuilderOptions } from '../types';
33
import { createProjectBuilder } from '../generator/ProjectBuilder';
44

55
import esmodule from '../plugins/common/esmodule';
6+
import styleImport from '../plugins/common/styleImport';
67
import containerClass from '../plugins/component/react/containerClass';
78
import containerInitState from '../plugins/component/react/containerInitState';
89
import containerInjectContext from '../plugins/component/react/containerInjectContext';
@@ -38,6 +39,7 @@ export default function createIceJsProjectBuilder(
3839
esmodule({
3940
fileType: 'jsx',
4041
}),
42+
styleImport(),
4143
containerClass(),
4244
containerInjectContext(),
4345
containerInjectUtils(),
@@ -61,6 +63,7 @@ export default function createIceJsProjectBuilder(
6163
esmodule({
6264
fileType: 'jsx',
6365
}),
66+
styleImport(),
6467
containerClass(),
6568
containerInjectContext(),
6669
containerInjectUtils(),

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IProjectBuilder, IProjectBuilderOptions } from '../types';
33
import { createProjectBuilder } from '../generator/ProjectBuilder';
44

55
import esmodule from '../plugins/common/esmodule';
6+
import styleImport from '../plugins/common/styleImport';
67
import containerClass from '../plugins/component/react/containerClass';
78
import containerInitState from '../plugins/component/react/containerInitState';
89
import containerInjectContext from '../plugins/component/react/containerInjectContext';
@@ -38,6 +39,7 @@ export default function createIceJsProjectBuilder(
3839
esmodule({
3940
fileType: 'jsx',
4041
}),
42+
styleImport(),
4143
containerClass(),
4244
containerInjectContext(),
4345
containerInjectUtils(),
@@ -61,6 +63,7 @@ export default function createIceJsProjectBuilder(
6163
esmodule({
6264
fileType: 'jsx',
6365
}),
66+
styleImport(),
6467
containerClass(),
6568
containerInjectContext(),
6669
containerInjectUtils(),

modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowc
1010

1111
import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
1212

13+
import '@alifd/next/lib/form/style';
14+
15+
import '@alifd/next/lib/input/style';
16+
17+
import '@alifd/next/lib/number-picker/style';
18+
19+
import '@alifd/next/lib/select/style';
20+
21+
import '@alifd/next/lib/button/style';
22+
1323
import utils, { RefsManager } from '../../utils';
1424

1525
import * as __$$i18n from '../../i18n';

modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ import React from 'react';
44

55
import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
66

7+
import '@alifd/next/lib/form/style';
8+
9+
import '@alifd/next/lib/input/style';
10+
11+
import '@alifd/next/lib/number-picker/style';
12+
13+
import '@alifd/next/lib/select/style';
14+
15+
import '@alifd/next/lib/button/style';
16+
717
import utils, { RefsManager } from '../../utils';
818

919
import * as __$$i18n from '../../i18n';

modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,20 @@ import Super, {
1313

1414
import SuperOther from '@alifd/next';
1515

16+
import '@alifd/next/lib/super/style';
17+
18+
import '@alifd/next/lib/button/style';
19+
20+
import '@alifd/next/lib/input/style';
21+
22+
import '@alifd/next/lib/form/style';
23+
24+
import '@alifd/next/lib/number-picker/style';
25+
26+
import '@alifd/next/lib/select/style';
27+
28+
import '@alifd/next/lib/search-table/style';
29+
1630
import utils from '../../utils';
1731

1832
import * as __$$i18n from '../../i18n';

modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowc
1010

1111
import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
1212

13+
import '@alifd/next/lib/form/style';
14+
15+
import '@alifd/next/lib/input/style';
16+
17+
import '@alifd/next/lib/number-picker/style';
18+
19+
import '@alifd/next/lib/select/style';
20+
21+
import '@alifd/next/lib/button/style';
22+
1323
import utils, { RefsManager } from '../../utils';
1424

1525
import * as __$$i18n from '../../i18n';

0 commit comments

Comments
 (0)