UNPKG

@winner-fed/winner-deploy

Version:

Generate a publication deployed by the See platform

200 lines (196 loc) 8.6 kB
/** * 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 };