我正在构建一个具有类型生成功能的 nuxt 模块。在模块中,我想生成类型,将它们添加到
.nuxt/types/
,然后在插件中使用它们将它们传递给通用函数。我该怎么做?
我想要这样的东西:
// module.ts
export default defineNuxtModule({
meta: {
// ...
},
defaults: {
// ...
},
setup(_options, nuxt) {
addTypeTemplate({
filename: 'foo-types.d.ts',
getContents: () => `type TypeForGeneric = Record<string, unknown>`,
})
nuxt.hook('prepare:types', async ({ references }) => {
references.push({ path: resolve(nuxt.options.buildDir, 'types/foo-types.d.ts') })
})
addPlugin(resolve('./runtime/plugin'))
},
})
// runtime/plugin.ts
import { defineNuxtPlugin } from '#app'
import type { TypeForGeneric } from '' // <= where can I import it from?
export default defineNuxtPlugin((nuxtApp) => {
const fooWithTypes = foo<TypeForGeneric>()
return {
provide: {
fooWithTypes,
},
}
})
对于您的示例,类型将在
.nuxt/foo-types.d.ts
生成,并且应该可以从此路径导入:#build/foo-types.d.ts
。 #build
别名在 .nuxt/tsconfig.json
中定义。