微生成器开发过程中常用 API 的组合封装,包含 fs、git、npm 等其他包的 API 封装,在能满足需求时,推荐使用该 npm 包的 API。
import { AppAPI } from '@modern-js/codesmith-api-app';
export default async (context: GeneratorContext, generator: GeneratorCore) => {
const appApi = new AppAPI(context, generator);
await appApi.runInstall();
};
检查当前生成器运行环境,检查项为:
参数:
string
校验的 node 版本。安装依赖,可传入安装依赖命令,默认根据 config 中的 packageManager
值进行。
参数:
string
安装依赖命令。该函数完成以下动作:
isMonorepoSubProject
不存在或者为 false)中提交初始 commit,commit 信息为 feat: init,支持自定义。参数:
string
初始化 commit message 信息。() => Promise<void>
安装依赖函数。渲染生成器模板文件。
参数:
templates/base-templates/**/*
。(resourceKey: string) => boolean
过滤函数,参数为 templatePattern 匹配的文件路径,返回 true 表示渲染该文件,返回 false 表示不渲染该文件。(resourceKey: string) => string
重命名函数,参数为 templatePattern 匹配的文件路径,返回新文件名。默认会替换 resourceKey 开头的 templates 目录和结尾的 .handlebars 后缀。Record<string, any>
渲染参数,当模板中存在 handlebars 或者 ejs 变量时,使用其传递对应变量值。'handlebars' | 'ejs'
模板文件类型,默认为 handlebars。例如:
await appApi.forgeTemplate(
'templates/base-templates/**/*',
undefined,
resourceKey =>
resourceKey
.replace('templates/base-templates/', '')
.replace('.handlebars', ''),
);
await appApi.forgeTemplate(
'templates/base-template/**/*',
resourceKey => !resourceKey.include('eslintrc.json'),
resourceKey =>
resourceKey
.replace('templates/base-template/', projectPath)
.replace('language', language as string)
.replace('.handlebars', ''),
{
name: packageName as string,
language,
isTs: language === Language.TS,
packageManager: getPackageManagerText(packageManager as any),
},
);
展示成功信息。
参数:
string
,默认为 Success || 成功。运行子生成器。
参数:
string
子生成器名称或者路径。string
子生成器运行的相对路径。Record<string, unknown>
子生成器运行的默认 config 配置。例如:
await appApi.runSubGenerator(
getGeneratorPath('@modern-js/repo-generator', context.config.distTag),
undefined,
{ ...context.config, hasPlugin: false },
);
通过 schema 完成用户交互输入。
参数:
FormilySchema | Question[]
问题列表,支持 Formily schema 和 inquirer 类型。'formily' | 'inquirer'
类型,默认值为 formily。Record<string, unknown> = {}
schema 默认值,传入该值的 schema 字段对应的问题将不再和用户交互。Record<string, (input: unknown, data?: Record<string, unknown>) => { success: boolean; error?: string }>
schema 中特殊字段的验证函数。Record<string, any>
schema 中字段的初始化值。Formily Schema 类型支持方式可参考自定义输入相关类型定义。
通过 schema 完成用户交互输入,schema 参数值为函数,用户处理国际化问题,仅支持 Formily schema。
参数:
config?: Record<string, any>) => FormilySchema
获取问题列表函数,config 参数为当前生成器中的 config 配置信息。Record<string, unknown> = {}
schema 默认值,传入该值的 schema 字段对应的问题将不再和用户交互。Record<string, (input: unknown, data?: Record<string, unknown>) => { success: boolean; error?: string }>
schema 中特殊字段的验证函数。Record<string, any>
schema 中字段的初始化值。Formily Schema 类型支持方式可参考自定义输入相关类型定义。