食谱
Transformers
Transformers 负责解析和操作 Nuxt 内容中的内容。
Nuxt 内容为每种内容类型提供了特定的 Transformers,用于解析原始内容并为查询和渲染做好准备。
您可以创建自定义 Transformers 来支持新的内容类型或改进受支持内容类型的功能。
- 创建您的 Transformers。Transformers 由 4 个部分组成
name
: Transformers 名称。extensions
: 有效文件扩展名列表。parse
: 如果提供,此函数将用于解析原始内容。transform
: 接收已解析的内容并对其进行操作。
my-transformer.ts
// @ts-expect-error
import { defineTransformer } from '@nuxt/content/transformers'
export default defineTransformer({
name: 'my-transformer',
extensions: ['.names'],
parse (_id: string, rawContent: string) {
return {
_id,
body: rawContent.trim().split('\n').map(line => line.trim()).sort()
}
}
})
- 定义简单的模块来注册 Transformers
my-module.ts
import { resolve } from 'path'
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup (_options, nuxt) {
nuxt.options.nitro.externals = nuxt.options.nitro.externals || {}
nuxt.options.nitro.externals.inline = nuxt.options.nitro.externals.inline || []
nuxt.options.nitro.externals.inline.push(resolve('./my-module'))
// @ts-expect-error
nuxt.hook('content:context', (contentContext) => {
contentContext.transformers.push(resolve('./my-module/my-transformer.ts'))
})
}
})
- 注册您的模块
nuxt.config.ts
import MyModule from './my-module/my-module'
export default defineNuxtConfig({
modules: [
// always put it before @nuxt/content because the transformers
// needs to be loaded before transformation occurs
MyModule,
'@nuxt/content'
]
})
就是这样。您可以在内容目录中创建 .names
文件。查看 Transformers 示例。