跳转到内容

基础用法

导入核心函数 startCheckUpgrade() 即可实现完整功能。

typescript
import { startCheckUpgrade } from 'use-upgrade'

最简用例

建议将这段代码放置于项目入口,确保一定被执行到:

typescript
import { startCheckUpgrade } from 'use-upgrade'

if (process.env.NODE_ENV === 'production') {
  startCheckUpgrade(() => {
    console.log('检测到新版本!')
  })
}

只要检测到网站有新版本,就会触发回调,在控制台打印内容。

环境区分

开发模式中 HTML 可能会频繁被修改,因此通过 process.env.NODE_ENV 判断仅在生产环境生效。
这样可以避免开发时频繁触发回调,影响开发者。

为保持文档简洁,后续示例中,这个判断逻辑均省略。

网站部署在子路径

如果网站部署在子路径上,需要把子路径名通过 basename 提供给本工具:

typescript
import { startCheckUpgrade } from 'use-upgrade'

startCheckUpgrade(callback, {
  basename: import.meta.env.BASE_URL, 
})
typescript
import { startCheckUpgrade } from 'use-upgrade'

startCheckUpgrade(callback, {
  basename: process.env.PUBLIC_URL, 
})
typescript
import { startCheckUpgrade } from 'use-upgrade'

startCheckUpgrade(callback, {
  basename: process.env.BASE_URL, 
})
typescript
import { startCheckUpgrade } from 'use-upgrade'

startCheckUpgrade(callback, {
  basename: '/path', 
})

如上述例子一样,大部分构建工具会把子目录作为环境变量注入,无需开发者自行拼写。

跳过新版本提示

推荐配合 Vite 插件 或者 Webpack 插件,可通过 Git 提交消息等方式无侵入式管理 use-upgrade 新版本提醒。

如果不使用插件,则可暂时注释掉 startCheckUpgrade(),后续再还原。

手动触发检查

use-upgrade 提供了手动触发检查的 API,可以让开发者在特定时机主动检查是否存在新版本,避免重要页面出现过时问题。

typescript
import { triggerCheckUpgrade } from 'use-upgrade'

triggerCheckUpgrade()
typescript
import { triggerCheckUpgrade } from 'use-upgrade'

triggerCheckUpgrade({
  fetch: true, 
})
typescript
import { triggerCheckUpgrade } from 'use-upgrade'

triggerCheckUpgrade({
  duplicate: true, // 即使当前版本过时,已触发过回调,也要重复触发
})

为了确保版本检查始终能拉取最新 index.html,建议手动触发检查时加上 fetch: true 参数。

取消实例

typescript
import { cancelCheckUpgrade } from 'use-upgrade'

cancelCheckUpgrade()

这将终止当前页面的实例,如果有多个浏览器 Tab 页,则开发者需手动处理其它 Tab 页的实例。