---
title: "Nuxt 应用钩子"
description: "在开发过程中检查脚本，或在运行时更改声明的全局变量。"
canonical_url: "https://nuxt-scripts.zhcndoc.com/docs/api/nuxt-app-hooks"
last_updated: "2026-08-11T09:33:17.223Z"
---

## `scripts:updated`

- 类型：`(ctx: { scripts: Record<string, NuxtDevToolsScriptInstance> }) => void | Promise<void>`

当 Nuxt Scripts 更新脚本的 DevTools 快照时，在开发环境中触发。负载包含生命周期事件和捕获的资源计时条目。

Nuxt Scripts 在内部使用此钩子来支持 DevTools。生产构建中不会触发此钩子。

```ts [plugins/nuxt-scripts.ts]
export default defineNuxtPlugin({
  setup() {
    useNuxtApp().hooks.hook('scripts:updated', (ctx) => {
      console.log('Scripts updated', ctx.scripts)
    })
  }
})
```

## `scripts:globals`

- 类型：`(globals: Record<string, Record<string, any>>) => void | Promise<void>`

在生成的 `scripts:init` 插件中运行，且紧接在其注册 `scripts.globals` 之前。可变的 `globals` 映射包含每个已声明的键，其值由构建时默认值与任何 `NUXT_PUBLIC_SCRIPTS_GLOBALS_*` 环境变量覆盖项合并而成。无需重新构建，即可修改条目的 `src` 或属性，或删除条目。

静态声明会保留其 `$scripts` 类型，并且仍符合资源打包条件。删除条目、设置 `enabled: false` 或清空其 `src` 都会跳过注册，并且其 `$scripts` 值为 `undefined`。此钩子无法添加未声明的键；如需添加，请在你自己的插件中调用 [`useScript()`](/docs/api/use-script)。

在 `enforce: 'pre'` 插件中注册监听器，以便它在 `scripts:init` 之前运行。

```ts [plugins/nuxt-scripts-globals.ts]
export default defineNuxtPlugin({
  enforce: 'pre',
  setup(nuxtApp) {
    const { tenant } = useRuntimeConfig().public
    nuxtApp.hooks.hook('scripts:globals', (globals) => {
      // 删除这个租户未使用的集成：
      if (!tenant.awinEnabled)
        delete globals.awin
      // 从运行时配置中计算 src：
      globals.trustedShops.src = `https://widgets.trustedshops.com/${tenant.trustedShopsId}.js`
    })
  }
})
```
