入门

配置

Nuxt Image 使用合理的默认值进行配置。

要配置图片模块并自定义其行为,您可以在您的 nuxt.config 中使用 image 属性

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    // Options
  }
})

注入

默认情况下,Nuxt Image v1 采用可组合的方式。如果您不使用组件,则不会向您的包添加任何其他代码。但是,如果您希望全局初始化一个 $img 助手,该助手将在您的整个应用程序中可用,您可以这样做。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    inject: true
  }
})

质量

生成的图像的质量。

您也可以使用 quality 属性 在组件级别覆盖此选项。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    quality: 80,
  }
})

格式

默认值:['webp']

您可以使用此选项来配置 <NuxtPicture> 使用的图像的默认格式。可用的格式是 webp, avif, jpeg, jpg, pnggif。格式的顺序很重要,因为将使用浏览器支持的第一个格式。您可以传递多个值,例如 ['avif', 'webp']

您也可以使用 format 属性 在组件级别覆盖此选项。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    format: ['webp']
  }
})

屏幕

预定义屏幕尺寸列表。

这些尺寸将用于生成图像的调整大小和优化版本(例如,使用 sizes 修饰符)。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    // The screen sizes predefined by `@nuxt/image`:
    screens: {
      'xs': 320,
      'sm': 640,
      'md': 768,
      'lg': 1024,
      'xl': 1280,
      'xxl': 1536,
      '2xl': 1536
    },
  }
})
我们与 Tailwind CSS 共享相同的命名和尺寸,并且我们添加了 xs 属性。

域名

要启用外部网站上的图像优化,请指定允许优化的域名。此选项将用于检测是否应优化远程图像。这对于确保外部 URL 不会被滥用是必要的。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    domains: ['nuxtjs.org']
  }
})

预设

预设是为您项目预定义的配置集合。预设将帮助您统一整个项目的图像。

export default defineNuxtConfig({
  image: {
    presets: {
      avatar: {
        modifiers: {
          format: 'jpg',
          width: 50,
          height: 50
        }
      }
    }
  }
})

提供者

为了创建和使用 自定义提供者,您需要使用 providers 选项并定义您的自定义提供者。

export default defineNuxtConfig({
  image: {
    providers: {
      random: {
        provider: '~/providers/random',
        options: {}
      }
    }
  }
})

提供者

默认值:ipx(或 ipxStatic 如果与静态 nitro 预设一起使用,例如,如果您正在运行 nuxt generate

我们可以指定默认提供者,在组件中未指定或调用 $img 时使用。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    provider: 'twicpics',
    twicpics: {
      baseURL: 'https://nuxt-demo.twic.pics'
    }
  }
})

修饰符

您可以为所选提供者设置默认修饰符。

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    provider: 'cloudinary',
    cloudinary: {
      baseURL: 'https://res.cloudinary.com/<company>/image/fetch/',
      modifiers: {
        effect: 'sharpen:100',
        quality: 'auto:best',
      }
    }
  }
})

密度

默认值:[1, 2]

指定一个值来处理 devicePixelRatio > 1(这些是具有视网膜显示屏和其他显示屏的设备)。您必须指定要为哪些 devicePixelRatio 值调整图像。

您可以 在 MDN 上阅读有关 devicePixelRatio 的更多信息.

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    densities: [1, 2, 3],
  }
})

目录

默认值:public

此选项允许您在使用 ipxipxStatic 提供者时指定源图像的位置。

例如,您可能希望将源图像放在 assets/images 目录中,而不是默认的 public 目录中,以便源图像不会被复制到 dist 中并部署

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    dir: 'assets/images'
  }
})

注意

  • 对于 ipxStatic 提供者,如果图像在生成期间未被抓取(无法访问的模态、页面或动态运行时大小),则将 dirpublic 更改为其他目录会导致 404 错误。
  • 对于 ipx 提供者,请确保也部署定制的 dir
  • 对于某些提供者(如 vercel),使用 public/ 以外的目录来存放资源是不支持的,因为调整大小是在运行时进行的(而不是在构建/生成时进行),并且资源是从 public/ 目录(部署 URL)获取的

别名

此选项允许您为 src 指定别名。

使用默认 ipx 提供者时,URL 别名在服务器端被缩短。这对于优化外部 URL 并将其不包含在 HTML 中特别有用。

使用其他提供者时,别名在运行时被解析并包含在 HTML 中。(只简化了使用方式)

示例

nuxt.config.ts
export default defineNuxtConfig({
  image: {
    domains: [
      'images.unsplash.com'
    ],
    alias: {
      unsplash: 'https://images.unsplash.com'
    }
  }
})

使用别名之前

<NuxtImg src="https://images.unsplash.com/<id>" />

生成

<img src="/_ipx/https://images.unsplash.com/<id>">

使用别名之后

<NuxtImg src="/unsplash/<id>" />

生成

<img src="/_ipx/unsplash/<id>" />

使用方式和输出都得到了简化!