依赖项
Nuxt Kit 提供用于检查可选依赖项是否已安装,并告知用户如何安装这些依赖项的实用工具。
模块通常依赖某些仅有部分项目需要的包,或者需要用户自行安装的包。Nuxt Kit 无需假定这些包已存在,也无需为用户未使用的包管理器打印安装命令,而是可以检查某个依赖项是否可解析,并通过项目自己的包管理器提供安装选项。
ensureDependencyInstalled
检查一个或多个依赖项是否已安装,并提示用户安装缺少的依赖项。
用法
import { defineNuxtModule, ensureDependencyInstalled } from '@nuxt/kit'
export default defineNuxtModule({
async setup () {
if (!await ensureDependencyInstalled('sass')) {
return
}
},
})类型
function ensureDependencyInstalled (names: string, options?: EnsureDependencyInstalledOptions): Promise<boolean>
function ensureDependencyInstalled (names: string[], options?: EnsureDependencyInstalledOptions): Promise<true | string[]>参数
names:要检查的一个或多个包名;如果缺少,则安装它们。
options:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
rootDir | string | nuxt.options.rootDir | 用于解析包和安装包的目录。 |
searchPaths | string[] | nuxt.options.modulesDir | 用于解析包的其他目录。 |
from | string | undefined | 用于解析包的额外 URL 或路径,例如 import.meta.url。当你自己的包将该依赖项作为对等依赖项提供时,此选项很有用。 |
prompt | boolean | undefined | 是否在安装前提示。true 始终提示,false 从不提示(在 StackBlitz 上会自动安装),如果不设置,则除 StackBlitz 外均会提示。 |
返回值
传入单个包名时,如果该包可用,则返回 true;否则返回 false。传入数组时,如果所有包都可用,则返回 true;否则返回仍然缺少的包名数组(因为用户拒绝安装、安装失败,或没有交互式终端)。
在 CI 环境或没有交互式终端时,不会安装任何内容。在这种情况下,缺少的包会作为诊断信息报告,其中包含安装命令;函数也会将这些包报告为缺少,以便你的模块能够优雅降级。
getAddDependencyCommand
获取用户应运行的命令,以便将依赖项添加到项目中。此命令会使用根据 cwd 检测到的包管理器;如果无法检测,则使用 npm。每当你打印安装说明时,都应使用此函数,以确保命令与项目的包管理器一致。
用法
import { defineNuxtModule, getAddDependencyCommand, useLogger } from '@nuxt/kit'
export default defineNuxtModule({
async setup (options, nuxt) {
const logger = useLogger('my-module')
const command = await getAddDependencyCommand('sass', nuxt.options.rootDir, { dev: true })
logger.warn(`\`sass\` is required. Run \`${command}\` to install it.`)
},
})类型
function getAddDependencyCommand (names: string | string[], cwd: string, options?: { dev?: boolean }): Promise<string>参数
names:要安装的一个或多个包名。
cwd:用于检测包管理器的目录。
options.dev:是否应将这些包作为开发依赖项安装。