你可以使用files-detla-updater在仅仅使用静态资源服务器的条件下来实现资源的差量更新
You need node.js and npm.
npm install files-delta-updater --save-dev
const { DeltaUpdater } = require('files-delta-updater');
const deltaUpdater = new DeltaUpdater({
baseRootPath: "C:\\Program Files\\myapp\\dist",
updateRootPath: "C:\\Program Files\\myapp_source\\dist",
remoteRootUrl: "https://oss.template.com/myapp",
channels: ["1.0.0","stable"]
})
deltaUpdater.getLatestVersionAfterSwitch().then(({path, version}) => {
console.log(path); // The directory where the latest version of the file is located
console.log(version); // the latest version
deltaUpdater.checkUpdate(); // Start checking for updates
})
optionsDeltaUpdaterConfigbaseRootPathstring (必填) - 更新器基础目录。当无已下载的更新资源时,则更新器使用该目录进行工作。updateRootPathstring (必填) - 更新器版本管理目录。新生成的目录将保存在此目录下。remoteRootUrlstring (必填) - 远程资源的URL。channelsstring[] (可选) - 更新渠道。分渠道更新资源。clearOldVersionboolean (可选) - 是否清理老版本资源。默认值为true,当更新器切换至最新版本后,将自动清理老版本资源文件。versionAvailablefunction (可选) - 自定版本比较规则。默认 当本地版本与远程版本不一致时进行更新。requestInstanceCreatorfunction (可选) - 自定义在获取更新文件时使用的axios实例
返回: Promise<{ version: string; path: string; }>
version本地可用的最新版本path本地可用的最新版本所在目录
参数:forceCheck
默认值true,检查步骤中的渠道检查不通过时则继续更新流程,否则反之。
返回:
checkResult枚举值not-available--channelsnot-available--versionnot-available--stagingusablesuccess
使用new DeltaUpdater创建的对象具有以下事件:
无可用更新时触发;
返回:
-
resultreasonmessage
-
reason值的枚举:not-available--channels渠道检查不满足条件not-available--version版本检查不满足条件not-available--staging灰度更新检查不满足条件
资源正在下载时触发;
返回:
-
resulttotalprocess
-
total带下载资源总数 -
process下载进度
资源下载完成时触发;
返回:
-
resultcurrentVersionnextVersionnextVersionDir
-
currentVersion当前版本号 -
nextVersion下一个版本号 -
nextVersionDir下一个版本所在目录
可用资源已下载至本地且已生成最新版本资源文件时触发;
返回:
-
resultcurrentVersionnextVersionnextVersionDir
-
currentVersion当前版本号 -
nextVersion下一个版本号 -
nextVersionDir下一个版本所在目录
更新器运行报错时触发;
返回:
Error