@aplus-frontend/build-cli
v2.1.0
Published
aplus build cli for aplus-frontend team.
Keywords
Readme
Aplus Build Cli
aplus构建拉取应用脚本,三条线的业务应用会在构建阶段,合并拉取成一个发布应用。
提示: 仅
构建应用需要使用该脚本,业务应用不需要。
安装
pnpm add @aplus-frontend/build-cli -D -w使用
// 构建应用中
// 根路径下的 scripts/build
import { buildAllApp } from "@aplus-frontend/build-cli";
import { execSync } from "child_process";
async function bootstrap() {
// 拉取远程业务应用代码并构建
await buildAllApp("master", "admin", () => {
execSync(`pnpm build`, {
stdio: "inherit",
encoding: "utf8",
});
});
}
bootstrap();配置文件
为了避免频繁的输入操作,可以在项目根目录下配置.aplus-sync-rc文件,接收一个json配置。
以下是一个例子:
{
"aplus-user": {
"aplus-user-base": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-user-group/aplus-user-base.git",
"aplus-user-mos": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-user-group/aplus-user-mos.git",
"aplus-user-wms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-user-group/aplus-user-wms.git",
"aplus-user-bms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-user-group/aplus-user-bms.git"
},
"aplus-admin": {
"aplus-admin-base": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-base.git",
"aplus-admin-mos": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-mos.git",
"aplus-admin-wms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-wms.git",
"aplus-admin-bms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-bms.git"
},
"global-admin": {
"aplus-admin-mos": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-mos.git",
"aplus-admin-wms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-wms.git",
"aplus-admin-bms": "https://codeup.aliyun.com/65f941491febde2b6c514822/frontend/aplus-admin-group/aplus-admin-bms.git"
},
"sub-app-name-mapping": {
"aplus-admin-base": "subapp-base",
"aplus-admin-mos": "subapp-mos",
"aplus-admin-wms": "subapp-wms",
"aplus-admin-bms": "subapp-bms"
}
}| 配置参数 | 配置值描述 | 类型 |
| ---------------------- | -------------------------------------------------------------------------------------------------- | ------------------------ |
| aplus-user | 业务应用对应的远程地址映射,key作为在发布应用中生成的文件夹名字,value是远程拉取业务应用的地址 | Record<string, string> |
| aplus-admin | 业务应用对应的远程地址映射,key作为在发布应用中生成的文件夹名字,value是远程拉取业务应用的地址 | Record<string, string> |
| global-admin | 业务应用对应的远程地址映射,key作为在发布应用中生成的文件夹名字,value是远程拉取业务应用的地址 | Record<string, string> |
| sub-app-name-mapping | 需要拷贝的文件夹名字映射 | Record<string, string> |
API 方法
buildAllApp
类型: function buildAllApp(branchName?: string, platform: "admin" | "user", afterBuild?: () => void): Promise<void>
描述: 并行拉取配置文件中的所有子应用代码并复制到目标目录,支持自动根据 CPU 核心数调整并发数
参数
| 参数 | 类型 | 默认值 | 描述 |
| ---------- | ------------------- | -------- | -------------------------------------------- |
| branchName | string | master | 分支名字 |
| platform | "admin" \| "user" | - | 平台类型,用于读取配置文件中对应的子应用列表 |
| afterBuild | () => void | - | 远程拉取全部业务应用并拷贝之后的回调函数 |
返回值: Promise<void>
buildGlobalApp
类型: function buildGlobalApp(branchName?: string, platform: "global", ignoreFiles?: string[], afterBuild?: () => void): Promise<void>
描述: 并行拉取全局应用的所有子应用代码并复制到目标目录,支持忽略指定文件/目录
参数
| 参数 | 类型 | 默认值 | 描述 |
| ----------- | ------------ | -------- | ---------------------------------------- |
| branchName | string | master | 分支名字 |
| platform | "global" | - | 平台类型,必须为 "global" |
| ignoreFiles | string[] | - | 需要忽略的文件/目录列表 |
| afterBuild | () => void | - | 远程拉取全部业务应用并拷贝之后的回调函数 |
返回值: Promise<void>
buildOneApp
类型: function buildOneApp(subAppName: string, branchName: string, repoUrl: string, afterBuild?: () => void): Promise<void>
描述: 拉取指定子应用的代码并复制到目标目录
参数
| 参数 | 类型 | 默认值 | 描述 |
| ---------- | ------------ | ------ | ------------------------------------ |
| subAppName | string | - | 业务应用名称 |
| branchName | string | - | 分支名字 |
| repoUrl | string | - | 远程仓库地址,推荐 https 格式 |
| afterBuild | () => void | - | 远程拉取业务应用并拷贝之后的回调函数 |
返回值: Promise<void>
