功能特性

启用或禁用可选的 Nuxt 功能,以解锁更多可能性。

Nuxt 的某些功能是基于选择性启用的,或者可以根据你的需求禁用。

features(功能)

inlineStyles(内联样式)

在渲染 HTML 时内联样式。当前仅在使用 Vite 时可用。

你也可以传递一个函数,该函数接收 Vue 组件的路径,并返回一个布尔值,用于指示是否对该组件的样式进行内联。

nuxt.config.ts
export default defineNuxtConfig({
  features: {
    inlineStyles: false // 或者一个函数来决定是否内联
  }
})

noScripts(不渲染脚本)

禁用 Nuxt 脚本和 JS 资源提示的渲染。也可以在 routeRules 中进行细粒度配置。

nuxt.config.ts
export default defineNuxtConfig({
  features: {
    noScripts: true
  }
})

future(未来功能)

还有一个 future 命名空间,可用于提前启用将在未来(可能是重大)版本中默认启用的新功能。

compatibilityVersion(兼容性版本)

此配置选项在 Nuxt v3.12+ 中可用。请注意,目前需要在每一个希望启用 Nuxt 4 行为的 layer 中分别定义兼容性版本。Nuxt 4 发布后将不再需要。

该选项可启用对 Nuxt 新特性或标志位的提前访问。

compatibilityVersion 设置为 4 会在你的 Nuxt 配置中更改默认行为,以选择性启用 Nuxt v4 的行为,但你也可以逐项重新启用 Nuxt v3 的行为进行测试(见示例)。如果遇到问题,请提交 issue,我们会在 Nuxt 或生态系统中进行修复。

export default defineNuxtConfig({
  future: {
    compatibilityVersion: 4,
  },
  // 若要重新启用 _全部_ Nuxt v3 行为,请设置以下选项:
  srcDir: '.',
  dir: {
    app: 'app'
  },
  experimental: {
    scanPageMeta: 'after-resolve',
    sharedPrerenderData: false,
    compileTemplate: true,
    resetAsyncDataToUndefined: true,
    templateUtils: true,
    relativeWatchPaths: true,
    normalizeComponentNames: false
    defaults: {
      useAsyncData: {
        deep: true
      }
    }
  },
  features: {
    inlineStyles: true
  },
  unhead: {
    renderSSRHeadOptions: {
      omitLineBreaks: false
    }
  }
})

typescriptBundlerResolution(TypeScript 打包器解析)

启用 TypeScript 的 "Bundler" 模块解析模式,这是 Nuxt 和 Vite 等框架推荐的设置。

使用带 exports 的现代库时,它可以提升类型支持。

参见 原始的 TypeScript PR

nuxt.config.ts
export default defineNuxtConfig({
  future: {
    typescriptBundlerResolution: true
  }
})