兼容性
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 { defineNuxtModule, checkNuxtCompatibility } 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 | Nuxt 版本,采用 semver 格式。版本可以用 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({
async 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()
调用从上下文中检索。