API Reference
minici以核心包为基础,通过平台插件的方式进行功能扩展,使用者可根据需求引入平台插件模块
以下罗列出每个模块的配置介绍,可自行参考
核心模块
核心模块是ci的必备模块,一切功能都基于核心开发
@hengshuai/mini-ci
此模块主要提供ci的终端交互模式
port
- type: string/number
web端口默认9034,目前没有实际使用作用,先忽略
config
- type: string
ci配置文件路径,默认读取.mini-ci/mini-ci.config.js
,如果配置了--config
参数,则读取该路径下的配置文件
npx mini-ci start -c /path/to/config.js
mode
- type: IProjectActionMode
- default: IProjectActionMode.UPLOAD_CODE
export enum IProjectActionMode {
/** 上传代码 */
UPLOAD_CODE = "uploadCode",
/** 提审 */
REVIEW = "review",
/** 发布 */
RELEASE = "release",
/** 体验 */
PRESET = "preset",
}
2
3
4
5
6
7
8
9
10
注意
命令行传入的默认优先级低于配置文件中的mode配置,当项目中没有设置时,默认所有的项目mode都被设置为终端模式值
设置ci的执行模式,目前支持以下几种模式,其它类型会提示类型错误
npx mini-ci start -m uploadCode
appids
- type: string
- default: null
设置要运行的appid项目,此参数是出于对部分appid可能要发版、提审啥的,通过此参数可以快速的运行指定项目appid,多个appid用逗号分隔,不传或者传空字符串则运行全部项目
npx mini-ci start --appids wx12344,202343
除此之外还可以在配置文件中设置ci.appids
来启用图形界面
slient
- type: boolean
- default: true
设置静默模式,默认为true,开启静默模式,不启用图形界面,只输出ci执行日志。false时启用图形界面
npx mini-ci start -s
npx mini-ci start -s false
2
除此之外还可以在配置文件中设置ci.virtual
来启用图形界面
timeout
- type: number
- default: 120
设置超时时间,默认为120s,超过120s则认为ci执行超时,会自动退出ci
npx mini-ci start -t 60
除此之外还可以在配置文件中设置ci.timeout
来启用图形界面
thread
多线程,正在开发中...
debug
- type: boolean | string | number
- default: false
开启debug模式,会启动图形界面,会走完该模式的所有流程,但不会执行最后操作,这对于一些问题的排查来说比较有用
npx mini-ci start --debug
@hengshuai/mini-core
此模块是ci的核心,是程序的入口
defineConfig
全局定义ci配置接口
export declare const defineConfig: (miniConfig: IMiniConfig) => {
ci?: import("@hengshuai/mini-type").ICI | undefined;
platforms: import("@hengshuai/mini-type").IPlatformsConfig;
};
2
3
4
setup
ci启动入口
export declare const setup: () => Promise<undefined>;
startByTerminal
调用终端启动时的入口
export declare const startByTerminal: (tConfig: ICITerminalConfig) => Promise<void>;
@hengshuai/mini-helper
此模块由一些辅助函数组成,大部分是服务于程序内部,使用者也可以调用内部提供的函数加速开发
rootDir
- type: string
- default: process.cwd()
ci执行的目录,默认为当前执行目录
resolvePath
- type: (p?: string) => string
获取以rootDir为根目录的绝对路径
export declare const resolvePath: (p?: string) => string;
logger
带有颜色的日志输出工具
export declare const logger: {
info: (...args: Array<string | number | boolean>) => void;
success: (...args: Array<string | number | boolean>) => void;
warn: (...args: Array<string | number | boolean>) => void;
error: (...args: Array<string | number | boolean>) => void;
log: (hexColor: string, ...args: Array<string | number | boolean>) => void;
cyan: (...args: Array<string | number | boolean>) => void;
};
2
3
4
5
6
7
8
useEnv
- type: () => CI_ENVS
获取当前ci的执行环境
export declare function useEnv(): CI_ENVS;
export declare enum CI_ENVS {
DEBUG = "Debug",
PROD = "Prod",
}
2
3
4
5
6
definePlatformConfig
该辅助函数可以在动态配置时进行类型推断
export declare function definePlatformConfig(config: IPlatformsConfig): IPlatformsConfig;
IPlatformsConfig 详见 mini-type
@hengshuai/mini-type
该模块主要是ci的类型定义以及一些常量
ICI
配置文件ci
选项配置
export interface ICI {
/**
* 可视化的
* @default false
*/
visual?: boolean;
/**
* 指定运行的appids
* @description 项目中可以通过环境变量来控制要运行的appid
*/
appids?: string[] | null;
/**
* 线程数
* @default 1
*/
thread?: number;
/**
* 超时时间(单位 ms)
* @default 120s
*/
timeout?: number;
/**
* 是否开启调试模式(调试模式不会自动执行最后一步)
* @default false
*/
debug?: boolean;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ICITerminalConfig
ci终端参数配置
export interface ICITerminalConfig {
/**
* 静默模式不会出现图形界面
* @default true
*/
silent: boolean;
/**
* 运行模式 (优先级最高)
* @default uploadCode
*/
mode: IProjectActionMode;
/**
* ci配置文件路径
*/
config: string;
/**
* 指定运行的appids
*/
appids: string[] | null;
/**
* web服务端口
*/
port: number;
/**
* 超时时间(单位 ms)
* @default 120s
*/
timeout: number;
/**
* 线程数
* @default 1
*/
thread?: number;
/**
* 是否开启调试模式(调试模式不会自动执行最后一步)
* @default false
*/
debug?: boolean;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
IMiniConfig
配置文件参数类型
export interface IMiniConfig {
/** ci配置 */
ci?: ICI;
/** 平台 */
platforms: IPlatformsConfig;
}
2
3
4
5
6
IPlatformsConfig
平台配置选项
export type IPlatformsConfig = {
[k in Platform]?: {
platformSpecific: IPlatformSpecific[k];
subs: IProjectConfig[];
};
};
2
3
4
5
6
Platform
内部支持的小程序平台常量
export declare enum Platform {
Wechat = "Wechat",
Alipay = "Alipay",
}
2
3
4
IProjectConfig
每个小程序项目的具体配置
export interface IProjectConfig {
appId: string;
platform?: Platform;
/** 项目路径 */
projectPath?: string;
/** 上传代码私钥地址 */
privateKeyPath?: string;
admin: string;
/**
* 发布模式
* @default uploadCode
*/
mode?: IProjectActionMode;
/**
* 不上传代码
* @default false
*/
skipUpload?: boolean;
/**
* 跳过提审
* @default false
*/
skipReview?: boolean;
version?: string;
description?: string;
/**
* 当前项目是否可视化(优先级:项目 > ci > config)
* @default false
*/
visual?: boolean;
type?: IProjectType;
compiler?: ICompileSettings; // 此为微信小程序编译配置,可自行查看源码
ignores?: string[];
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
IPlatformSpecific
平台的独有配置,不同平台的配置可能不同,这里简单列举微信平台配置
export type IPlatformSpecific = {
[Platform.Wechat]: {
name?: string;
/** 项目路径 */
projectPath?: string;
/** 上传代码私钥地址 */
privateKeyPath?: string;
};
// 其他平台...
};
2
3
4
5
6
7
8
9
10
平台插件
平台插件主要是对不同平台进行ci配置的封装,使用者可以按需引入不同的平台插件
不同平台的插件都以setup
为入口
@hengshuai/mini-wechat
setup
export declare function setup(
projectConfig: IProjectConfig,
platformSpecificConfig: IPlatformSpecific[Platform.Wechat],
config: IMiniConfig
): Promise<undefined>;
2
3
4
5
@hengshuai/mini-alipay
开发中...