UNPKG

@winner-fed/winner-deploy

Version:

Generate a publication deployed by the See platform

316 lines (258 loc) 9.22 kB
# @winner-fed/winner-deploy > 用于生成 SEE 平台部署包的工具库 ## 简介 `@winner-fed/winner-deploy` 是一个专门为 SEE 平台设计的部署包生成工具。它可以将前端项目打包成符合 SEE 平台规范的部署包,支持多种应用类型和部署模式。 ## 特性 - 🚀 支持外框架(bizframe)和子系统(subsystem)两种应用类型 - 📦 自动生成 SEE 平台所需的 manifest.json 和 deploy.xml 配置文件 - 🐳 支持 Docker 容器化部署 - 🔧 灵活的模板变量配置系统 - 📝 支持 Python 和 Bash 两种脚本类型 - 🎯 可自定义文件拷贝和配置生成逻辑 ## 安装 ```bash npm install @winner-fed/winner-deploy # 或 yarn add @winner-fed/winner-deploy # 或 pnpm add @winner-fed/winner-deploy ``` ## 快速开始 ### 基础用法 ```javascript import { generateSeePackageZip } from '@winner-fed/winner-deploy'; // 最简单的使用方式 generateSeePackageZip({ name: 'my-app', version: '1.0.0', description: '我的应用' }); ``` ### 完整配置示例 ```javascript import { generateSeePackageZip } from '@winner-fed/winner-deploy'; generateSeePackageZip( { system: 'winner-front', type: 'subsystem', name: 'my-app', appType: 'my-app', version: '1.0.0', group: 'bizframe', configName: 'config.local', outputName: 'dist', description: '我的应用部署包', seePackageType: 'web', scriptsType: 'python', copyFiles: ['version.js', 'logo.png'], templateFunc: () => { return './dist/config.local.js'; }, variablesFunc: () => { return [ { type: 'input', label: '应用标题', name: 'APP_TITLE', default: '默认标题' } ]; } }, (err, result) => { if (err) { console.error('生成失败:', err); } else { console.log('生成成功:', result); } } ); ``` ## API 文档 ### generateSeePackageZip(options, callback) 生成 SEE 平台部署包的主要函数。 #### 参数说明 | 参数名 | 类型 | 默认值 | 必填 | 说明 | | -------------- | ------------- | ------------------------------ | ---- | -------------------------------------------------------- | | system | string | 'winner-front' | 否 | 系统类型,SEE 平台的分组维度 | | type | string | 'subsystem' | 否 | 应用类型:'bizframe'(外框架)或 'subsystem'(子系统) | | name | string | - | 是 | 发布物名称 | | appType | string | name 的值 | 否 | 发布物类型 | | version | string | - | 是 | 发布包版本 | | group | string | 'bizframe' | 否 | 应用分组 | | configName | string | 'config.local' | 否 | 配置文件名称(不含 .js 后缀) | | outputName | string | 'dist' | 否 | 输出目录名称 | | description | string | - | 否 | 发布包说明 | | seePackageName | string | `${system}-${name}-${version}` | 否 | SEE 发布物的包名(zip 文件名) | | seePackageType | string | 'web' | 否 | SEE 平台发布物包类型:'web''docker' | | dockerImage | string | - | 否 | Docker 容器化镜像名(seePackageType 为 'docker' 时生效) | | scriptsType | string | 'python' | 否 | 脚本类型:'python''bash' | | copyFiles | Array<string> | [] | 否 | 需要直接拷贝到 SEE 包的文件列表 | | templateFunc | function | - | 否 | 自定义变量配置文件生成函数 | | variablesFunc | function | - | 否 | deploy.xml 模板变量配置函数 | #### templateFunc 函数 用于自定义变量配置文件的生成逻辑。 ```javascript templateFunc: function() { if (type === 'bizframe') { return `./dist/config.local.js`; } // 返回配置文件路径 } ``` #### variablesFunc 函数 用于配置 deploy.xml 模板变量,支持动态配置。 ```javascript variablesFunc: 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 []; } } return []; } ``` #### copyFiles 配置 指定需要直接拷贝到 SEE 包中但不包含在 manifest.json 配置中的文件。 ```javascript copyFiles: [ 'version.js', // 项目根目录下的 version.js 'assets/logo.png', // assets 目录下的 logo.png 'config/env.json' // config 目录下的 env.json ]; ``` #### callback 回调函数 ```javascript function callback(error, result) { if (error) { // 处理错误 console.error('生成失败:', error); } else { // 处理成功结果 console.log('生成成功:', result); } } ``` ## 模板变量配置 SEE 平台支持多种类型的模板变量控件,用于在部署时动态配置应用参数。详细的模板变量配置说明请参考 [TYPE.md](./TYPE.md)。 ### 支持的控件类型 - **input**: 普通文本输入框 - **select**: 单选下拉框 - **switch**: 开关组件 - **smallfile**: 文件上传控件(小于 2M) - **switchForm**: 开关表单 - **complexSelect**: 复杂单选框 - **table**: 表格控件 - **division**: 分栏折叠控件 - **password**: 密码输入框(数据加密存储) - **hidden**: 隐藏输入框(不显示给用户) ### 示例配置 ```javascript const variables = [ { type: 'input', label: '应用标题', tooltip: '设置应用的显示标题', name: 'APP_TITLE', default: '默认应用标题' }, { type: 'select', label: '环境选择', options: 'dev:开发环境;test:测试环境;prod:生产环境', tooltip: '选择部署环境', name: 'ENVIRONMENT', default: 'dev' }, { type: 'switch', label: '启用调试', tooltip: '是否启用调试模式', name: 'DEBUG_MODE', default: false }, { type: 'password', label: '数据库密码', tooltip: '数据库连接密码', name: 'DB_PASSWORD', required: true, default: '' }, { type: 'hidden', label: '应用版本号', tooltip: '应用内部版本号,用于系统识别', name: 'APP_VERSION', default: '1.0.0' } ]; ``` ## 项目结构 生成的 SEE 部署包包含以下文件: ``` see-package.zip ├── manifest.json # 应用清单文件 ├── deploy.xml # 部署配置文件 ├── install.py/.sh # 安装脚本 ├── uninstall.py/.sh # 卸载脚本 ├── start.py/.sh # 启动脚本 ├── stop.py/.sh # 停止脚本 ├── config.local.js # 配置文件(如果存在) └── dist/ # 应用文件目录 └── ... ``` ## 使用场景 ### 1. 外框架应用(bizframe) 适用于作为主框架的运行的子应用。 ```javascript generateSeePackageZip({ type: 'bizframe', name: 'main-frame', version: '1.0.0', description: '主框架应用' }); ``` ### 2. 子系统应用(subsystem) 适用于业务子系统,通常作为微前端模块。 ```javascript generateSeePackageZip({ type: 'subsystem', name: 'user-management', version: '1.0.0', description: '用户管理子系统' }); ``` ### 3. Docker 容器化部署 支持生成容器化部署的 SEE 包。 ```javascript generateSeePackageZip({ name: 'my-app', version: '1.0.0', seePackageType: 'docker', dockerImage: 'my-app:1.0.0', description: '容器化应用' }); ``` ## 注意事项 1. **文件路径**: `copyFiles` 中的文件路径是相对于项目根目录的 2. **配置文件**: 配置文件名不需要包含 `.js` 后缀 3. **版本号**: 建议使用语义化版本号格式 4. **Docker 镜像**: 使用 Docker 部署时需要确保镜像已构建并推送到镜像仓库 5. **脚本类型**: Python 脚本需要目标环境支持 Python 运行时 ## 更新日志 详细的更新日志请查看 [CHANGELOG.md](./CHANGELOG.md)。 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request 来改进这个项目。