以编程方式使用

Nuxt Kit 提供了一组实用工具,帮助你以编程方式使用 Nuxt。这些函数允许你加载 Nuxt、构建 Nuxt,并加载 Nuxt 配置。

Geprüfte Übersetzung ·0 % geprüft

在需要以编程方式使用 Nuxt 时,编程使用非常有用,例如在构建 CLI 工具 或 测试工具 时。

loadNuxt

以编程方式加载 Nuxt。它会加载 Nuxt 配置,实例化并返回包含 Nuxt 实例的 Promise。

类型

function loadNuxt (loadOptions?: LoadNuxtOptions): Promise<Nuxt>

参数

loadOptions:Nuxt 的加载条件。loadNuxt 在内部使用 c12,因此它接受与 c12.loadConfig 相同的选项,并附加以下选项:

属性类型必需描述
devbooleanfalse如果设置为 true,Nuxt 将以开发模式加载。
readybooleantrue如果设置为 true,loadNuxt 调用后 Nuxt 将可立即使用。如果设置为 false,你需要调用 nuxt.ready() 来确保 Nuxt 可用。

buildNuxt

以编程方式构建 Nuxt。它会调用构建器(当前为 @nuxt/vite-builder 或 @nuxt/webpack-builder)来打包应用程序。

类型

function buildNuxt (nuxt: Nuxt): Promise<any>

参数

nuxt:要构建的 Nuxt 实例。可以通过上下文中的 useNuxt() 调用获取。

loadNuxtConfig

加载 Nuxt 配置。它将返回包含配置对象的 Promise。

类型

function loadNuxtConfig (options: LoadNuxtConfigOptions): Promise<NuxtOptions>

参数

options:用于控制如何查找、合并和加载配置的选项。

属性类型默认值描述
cwdstringprocess.cwd()从哪个目录加载 nuxt.config。
configFilestring'nuxt.config'要加载的配置文件名称,不带扩展名。
rcFilestring | false'.nuxtrc'与配置文件一同加载的 .rc 文件名称,或设置为 false 表示不加载任何文件。
globalRcbooleantrue同时加载用户级和工作区级的 .nuxtrc 文件。
overridesNuxtConfigundefined应用于每一层之上的配置,包括根项目自身的 nuxt.config。
defaultsNuxtConfigundefined在每一层之下、架构默认值之前应用的配置。
dotenvboolean | NuxtDotenvOptionstrue在解析配置之前将 .env 文件加载到 process.env。如果环境变量已经填充,请设置为 false。
envNamestring | falseundefined用于选择 $env.* 配置覆盖项的环境名称。优先级高于 nuxt.config 中设置的 envName。
resolve(source, context) => ResolvedNuxtLayer | nullishundefined自行将 extends 条目解析为一层。返回 nullish 值时,将对该来源回退到默认解析方式。
import(id: string) => Promise<unknown>undefined使用自定义加载器而非默认加载器导入配置文件,例如,在 Nuxt 不使用 jiti 的情况下加载 TypeScript 配置。
onConfigResolved(context: ResolvedNuxtConfigContext) => voidundefined配置成功加载后调用一次并等待其完成。如果加载抛出错误,则不会调用。

onConfigResolved

传递给 onConfigResolved 的上下文描述了加载的内容:

属性类型描述
rawConfigNuxtConfig合并所有层后的用户配置,不应用架构默认值,也不包含 overrides、defaults 和 defaultConfig,因此对未更改的项目重复加载时会产生相同的快照。
layersNuxtConfigLayer[]已解析的配置层,按优先级从高到低排列。
configFilestring?根 nuxt.config 文件的绝对路径(如果找到)。
cwdstring加载配置的目录。

diffNuxtConfig

比较两个 rawConfig 快照(由 onConfigResolved 提供),并返回它们之间的差异。当你自行监视配置文件,并需要在决定是否重启之前了解哪些键发生了变化时,这很有用。

类型

function diffNuxtConfig (oldConfig: NuxtConfig, newConfig: NuxtConfig): NuxtConfigDiffEntry[]

参数

oldConfig:之前的 rawConfig 快照。

newConfig:当前的 rawConfig 快照。

返回值

一个条目数组,每个条目对应一处差异。每个条目包含:

属性类型描述
type'added' | 'removed' | 'changed'值的变化类型。
pathArray<string | number>已更改值的属性路径,数组索引以数字表示,例如 ['runtimeConfig', 'public', 'foo']。读取配置对象中的值时,优先使用此属性。
labelstring将 path 写成属性访问器的形式,用于显示或与已知键匹配,例如 runtimeConfig.public.foo 或 modules[0]。
newValueunknown对于 added 和 changed 条目,此属性存在。
oldValueunknown对于 removed 和 changed 条目,此属性存在。

源代码未更改的函数不会被报告为变化,因此,声明了内联函数的配置不会在每次加载时都与自身产生差异。

示例

import { diffNuxtConfig, loadNuxtConfig } from '@nuxt/kit'

let previous

async function load () {
  await loadNuxtConfig({
    cwd: process.cwd(),
    onConfigResolved ({ rawConfig }) {
      if (previous) {
        for (const entry of diffNuxtConfig(previous, rawConfig)) {
          console.log(`${entry.label} was ${entry.type}`)
        }
      }
      previous = rawConfig
    },
  })
}

writeTypes

生成 tsconfig.json 并将其写入项目的 buildDir。

类型

function writeTypes (nuxt?: Nuxt): void

参数

nuxt:要构建的 Nuxt 实例。可以通过上下文中的 useNuxt() 调用获取。