Compatibility
Nuxt Kit 提供了一系列工具,帮助你检查模块与不同 Nuxt 版本的兼容性。
Nuxt Kit 工具可以在 Nuxt 3、带有 Bridge 的 Nuxt 2 以及不带 Bridge 的 Nuxt 2 中使用。为了确保你的模块与所有版本兼容,你可以使用 checkNuxtCompatibility、assertNuxtCompatibility 和 hasNuxtCompatibility 函数。它们会检查当前 Nuxt 版本是否满足你提供的约束条件。你也可以使用 isNuxt2、isNuxt3 和 getNuxtVersion 函数进行更细粒度的检查。
checkNuxtCompatibility
检查当前 Nuxt 版本是否满足约束条件。如果不满足,返回一个消息数组。Nuxt 2 版本还会检查 bridge 支持。
用法
import { checkNuxtCompatibility, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
async setup (_options, nuxt) {
const issues = await checkNuxtCompatibility({ nuxt: '^2.16.0' }, nuxt)
if (issues.length) {
console.warn('发现 Nuxt 兼容性问题:\n' + issues.toString())
} else {
// 做一些处理
}
},
})
类型
function checkNuxtCompatibility (constraints: NuxtCompatibility, nuxt?: Nuxt): Promise<NuxtCompatibilityIssues>
参数
constraints:要检查的版本和构建器约束条件。它接受以下属性:
| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
nuxt | string | false | 以 semver 格式表示的 Nuxt 版本。版本可以用 Node.js 的方式定义,例如:>=2.15.0 <3.0.0。 |
bridge | Record<string, string | false> | false | 为特定的 Nuxt 构建器(如 vite、webpack 或 rspack)指定版本约束,或禁用兼容性。使用 false 禁用。 |
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
assertNuxtCompatibility
断言当前 Nuxt 版本满足约束条件。如果不满足,会抛出一个错误,其中包含所有问题列表(以字符串形式)。
类型
// @errors: 2391
import type { Nuxt, NuxtCompatibility } from '@nuxt/schema'
// ---cut---
function assertNuxtCompatibility (constraints: NuxtCompatibility, nuxt?: Nuxt): Promise<true>
参数
constraints:要检查的版本和构建器约束条件。详见 checkNuxtCompatibility 中的约束表。
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
hasNuxtCompatibility
检查当前 Nuxt 版本是否满足约束条件。如果所有约束条件都满足则返回 true,否则返回 false。Nuxt 2 版本还会检查 bridge 支持。
用法
import { defineNuxtModule, hasNuxtCompatibility } from '@nuxt/kit'
export default defineNuxtModule({
async setup (_options, nuxt) {
const usingNewPostcss = await hasNuxtCompatibility({ nuxt: '^2.16.0' }, nuxt)
if (usingNewPostcss) {
// 做一些处理
} else {
// 做其他处理
}
},
})
类型
function hasNuxtCompatibility (constraints: NuxtCompatibility, nuxt?: Nuxt): Promise<boolean>
参数
constraints:要检查的版本和构建器约束条件。详见 checkNuxtCompatibility 中的约束表。
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
isNuxtMajorVersion
检查当前 Nuxt 实例是否为指定的主版本。
用法
import { defineNuxtModule, isNuxtMajorVersion } from '@nuxt/kit'
export default defineNuxtModule({
setup () {
if (isNuxtMajorVersion(3)) {
// 为 Nuxt 3 做一些处理
} else {
// 为其他版本做其他处理
}
},
})
类型
function isNuxtMajorVersion (major: number, nuxt?: Nuxt): boolean
参数
major:要检查的主版本。
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
isNuxt3
检查当前 Nuxt 版本是否为 3.x。
请改用 isNuxtMajorVersion(2, nuxt)。这可能会在 @nuxt/kit v5 或未来的主版本中被移除。
:
类型
function isNuxt3 (nuxt?: Nuxt): boolean
参数
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
isNuxt2
检查当前 Nuxt 版本是否为 2.x。
请改用 isNuxtMajorVersion(2, nuxt)。这可能会在 @nuxt/kit v5 或未来的主版本中被移除。
:
类型
function isNuxt2 (nuxt?: Nuxt): boolean
参数
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。
getNuxtVersion
返回当前的 Nuxt 版本。
类型
function getNuxtVersion (nuxt?: Nuxt): string
参数
nuxt:Nuxt 实例。如果未提供,会通过 useNuxt() 调用从上下文中获取。