fix: 修复生成的 icejs 项目不支持 constants 的问题, fixes #1259

This commit is contained in:
LeoYuan 袁力皓 2022-11-24 14:02:45 +08:00 committed by 林熠
parent 3f53875063
commit 3c165617bf
3 changed files with 61 additions and 1 deletions

View File

@ -0,0 +1,3 @@
{
"releaseCommitMessageFormat": "chore(release): code-generator - {{currentTag}}"
}

View File

@ -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<PluginConfig> = (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;

View File

@ -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(),