依赖项

来源
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:

属性类型默认值描述
rootDirstringnuxt.options.rootDir用于解析包和安装包的目录。
searchPathsstring[]nuxt.options.modulesDir用于解析包的其他目录。
fromstringundefined用于解析包的额外 URL 或路径,例如 import.meta.url。当你自己的包将该依赖项作为对等依赖项提供时,此选项很有用。
promptbooleanundefined是否在安装前提示。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:是否应将这些包作为开发依赖项安装。