@winner-fed/winner-deploy
Version:
Generate a publication deployed by the See platform
200 lines (196 loc) • 8.6 kB
TypeScript
/**
* types
* @Author: liwb (lwbhtml@163.com)
* @Date: 2025-07-24 16:49
* @LastEditTime: 2025-07-24 16:49
* @Description: types
*/
type VariablesType = 'input' | 'select' | 'editor' | 'switch' | 'smallfile' | 'table' | 'mselect' | 'switchForm' | 'complexSelect' | 'division' | 'password' | 'hidden';
interface FieldAttributes {
/** 控件类型 */
type: VariablesType;
/** 显示标签 */
label: string;
/** 参数名称 */
name: string;
/** 帮助信息,辅助用户输入正确的参数值 */
tooltip?: string;
/** 配置界面开启是否默认显示该参数,用于隐藏不常修改的配置参数。可选值:true、false */
visible?: string;
/** 是否必填,默认忽略该配置,所有配置项均为必填 */
required?: string;
/** 冻结表行,表格配置默认值,配置不允许用户增加或者修改行 */
fixed?: string;
/** 控件是否默认折叠,操控控件默认展示时是否占用最小空间,选填字段;可选值:true、false */
fold?: string;
/** 选择项,select、mselect、linkageform控件必填。示例:"true:是;false:否" */
options?: string;
/** 校验规则。支持系统提供的默认规则,同时支持正则校验。多个表达式用逗号分隔 */
validate?: string;
/** 在发布物栈模式下起效,参数是否升级到栈的全局参数,选填字段。可选值:true、false */
upgrade?: string;
/** 是否将参数默认暴露到外部,供依赖的应用直接使用,选填字段;可选值:true、false */
expose?: string;
/** 加密算法,类型为password时有效,可选值为有JRES_DES、JRES_SM4、CRES_DES、CRES_SM4、SEE_DES、SEE_SM4,多个算法以分号分隔 */
algorithm?: string;
/** 配置成true时,使用保存值覆盖当前配置;配置成false时,使用包内值覆盖当前配置 */
merge?: string;
/** 与upgrade配合使用,如果符合控件仅有其中部分控件需要升级到栈全局配置,则配置该属性 */
isomeris?: string;
/** 源控件名称,用于控件name属性修改的情况,指向原有控件 */
old_name?: string;
/** switchForm 控件的默认值 */
default?: any;
/** table 类型控件的键值数组(兼容字段) */
keys?: FieldAttributes[];
/** table 类型控件的列配置数组 */
columns?: FieldAttributes[];
/** switchForm 和 division 类型控件的子元素数组 */
children?: FieldAttributes[];
}
interface DeployOptions {
/**
* 系统类型, SEE 平台的分组是以系统类型字段纬度来的
* @default winner-front
*/
system: string;
/**
* 应用类型, 外框架 - bizframe | 子系统 - subsystem
* @default bizframe
*/
type: 'bizframe' | 'subsystem';
/**
* 发布物名称。当包含 scope 时,如字符 @、/ 。会做自动的转换。如@winner-fed/winner-deploy 转换为 winner-fed-winner-deploy
* @default package.json -> name
*/
name: string;
/**
* 发布包版本
* @default package.json -> version
*/
version: string;
/**
* 发布包的描述说明
* @default package.json -> description
*/
description: string;
/**
* 发布物类型, 默认为 应用名称
* @default name
*/
appType?: string;
/**
* 发布物名称, 默认为 应用名称
* @default name
*/
appName?: string;
/**
* 应用分组, 默认为 bizframe
* @default 'bizframe'
*/
group?: string;
/**
* 配置文件名称,不带有 .js。当强制为空时,可以理解成,是构建静态资源的 see 包,不包含 index.html,config.local.js 文件等,此时 scriptsType 只能使用 bash
* @default config.local
*/
configName?: string;
/**
* 输出的目录名称
* @default dist
*/
outputName?: string;
/**
* 自定义变量配置文件
*/
templateFunc?: () => string | undefined;
/**
* deploy.xml模板变量, 可以动态配置
*/
variablesFunc?: () => Array<FieldAttributes> | undefined;
/**
* 不包含在 manifest.json 配置的文件,直接拷贝到 see 包里。文件路径是相对于项目根目录的路径+文件名,比如 dist/子包/version.js,那么 copyFiles: ['version.js']
*/
copyFiles?: string[];
/**
* see发布物的包名,也就是 zip 包的命名
* @default `${system}-${name}-${version}`
*/
seePackageName?: string;
/**
* see发布物的存放路径,默认项目根目录下的 package
* @default `package`
*/
seePackagePath?: string;
/**
* see平台发布物包的类型,'web'(默认的) | 'docker'(支持容器化部署的SEE发布物)
* @default web
*/
seePackageType?: 'web' | 'docker';
/**
* docker 容器化镜像名,seePackageType 为 docker 时生效
*/
dockerImage?: string;
/**
* 脚本类型
* @default python
*/
scriptsType?: 'python' | 'bash';
/**
* 是否在安装后对 template 中的配置 .js 做混淆;为 false 时不拷贝 scripts/js,afterInstall 不执行 node 混淆
* @default true
*/
enableObfuscation?: boolean;
/**
* 模板文件路径,支持传入多个模板文件路径,key 为模板文件名称,会放到see包的 template 目录下,value 为模板文件的绝对路径,可以使用 ejs 语法
* @default null
*/
tplPath?: Record<string, string>;
}
/**
* 生成 see 平台部署包
* @param system {string} 系统类型, SEE 平台的分组是以系统类型字段纬度来的, 默认为 winner-front
* @param type {string} 应用类型, 外框架 - bizframe | 子系统 - subsystem, 默认为 主系统 - bizframe
* @param name {string} 发布物名称。当包含 scope 时,如字符 @、/ 。会做自动的转换。如@winner-fed/winner-deploy 转换为 winner-fed-winner-deploy
* @param appType {string} 发布物类型, 默认为 应用名称 - name
* @param appName {string} 发布物名称, 默认为 应用名称 - name
* @param group {string} 应用分组, 默认为 bizframe
* @param version {string} 发布包版本
* @param configName {string} 配置文件名称,不带有 .js, 默认为 config.local
* @param outputName {string} 输出的目录名称,默认为 dist
* @param templateFunc {function} 自定义变量配置文件, 默认为
* function () {
if (type === 'bizframe') {
return `./dist/config.local.js`;
}
}
* @param variablesFunc {function} deploy.xml模板变量, 可以动态配置, 默认为
* function () {
* const context = process.cwd()
if (type === 'bizframe') {
try {
const {variables} = require(path.resolve(
context,
'build',
'package',
`./variables.js`
));
return variables || [];
} catch (error) {
console.error(error);
return [];
}
}
}
* @param copyFiles {Array<string>} 不包含在 manifest.json 配置的文件,直接拷贝到 see 包里。文件路径是相对于项目根目录的路径+文件名,比如 dist/子包/version.js,那么 copyFiles: ['version.js']
* @param description {string} 发布包说明
* @param seePackageName {string} see发布物的包名,也就是 zip 包的命名,默认为 `${system}-${name}-${version}`
* @param seePackagePath {string} see发布物的存放路径,默认项目根目录下的 package,如果想在根目录下生成see发布物,值可设置为 '/'
* @param seePackageType see 平台发布物包的类型,'web'(默认的) | 'docker'(支持容器化部署的SEE发布物)
* @param dockerImage docker 容器化镜像名,seePackageType 为 docker 生效
* @param scriptsType 脚本类型 'python' | 'bash'
* @param enableObfuscation 是否在安装后对配置 .js 做混淆,默认 false
* @param tplPath 模板文件路径,支持传入多个模板文件路径,key 为模板文件名称,会放到see包的 template 目录下,value 为模板文件的绝对路径,可以使用 ejs 语法
* @param cb {function} 回调函数,用于处理在组装 see 包后,可以自定义执行的动作
*/
declare const generateSeePackageZip: ({ system, type, name, appType, appName, group, version, configName, outputName, templateFunc, variablesFunc, copyFiles, description, seePackageName, seePackagePath, seePackageType, dockerImage, scriptsType, enableObfuscation, tplPath }: DeployOptions, cb: () => void) => void;
export { generateSeePackageZip };