From dc86c0252efc6009cc6b74dd13dcfca8b751eb3a Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Fri, 20 May 2022 00:47:21 -0700 Subject: [PATCH] fix: build error --- package.json | 1 + playground/nuxt.config.ts | 2 +- src/module.ts | 77 ++++++++++++++++++++++----------------- src/runtime/client.ts | 2 +- 4 files changed, 46 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index f017f76..60fed70 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "prepublishOnly": "nr build", "build": "nuxt-module-build", "play": "nr build && nuxi dev playground", + "build:playground": "nuxi build playground", "lint": "eslint .", "lint:fix": "eslint . --fix", "release": "bumpp --commit --push --tag && pnpm publish", diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 33d6bbf..3f4a0a0 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,5 +1,5 @@ import { defineNuxtConfig } from 'nuxt' -import Module from '..' +import Module from '../src/module' // https://v3.nuxtjs.org/api/configuration/nuxt.config export default defineNuxtConfig({ diff --git a/src/module.ts b/src/module.ts index a493045..200fa0c 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,9 +1,8 @@ import { fileURLToPath } from 'url' -import { dirname, join } from 'pathe' +import { join } from 'pathe' import { defu } from 'defu' -import { addServerHandler, defineNuxtModule } from '@nuxt/kit' -import fs from 'fs-extra' +import { addServerHandler, addTemplate, defineNuxtModule } from '@nuxt/kit' export interface ModuleOptions { baseURL: string @@ -21,10 +20,10 @@ export default defineNuxtModule({ }, async setup(options, nuxt) { const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url)) - nuxt.options.build.transpile.push(runtimeDir) + nuxt.options.build.transpile.push(runtimeDir, '#build/trpc-client', '#build/trpc-handler') - const clientPath = join(nuxt.options.buildDir, 'trpc-client.ts') const handlerPath = join(nuxt.options.buildDir, 'trpc-handler.ts') + nuxt.options.build.transpile.push(handlerPath) // Final resolved configuration const finalConfig = nuxt.options.runtimeConfig.public.trpc = defu(nuxt.options.runtimeConfig.public.trpc, { @@ -32,43 +31,53 @@ export default defineNuxtModule({ trpcURL: options.trpcURL, }) + nuxt.hook('autoImports:extend', (imports) => { + imports.push( + { name: 'useClient', from: '#build/trpc-client' }, + { name: 'useAsyncQuery', from: join(runtimeDir, 'client') }, + ) + }) + addServerHandler({ route: `${finalConfig.trpcURL}/*`, handler: handlerPath, }) - nuxt.hook('autoImports:extend', (imports) => { - imports.push( - { name: 'useClient', from: clientPath }, - { name: 'useAsyncQuery', from: join(runtimeDir, 'client') }, - ) + addTemplate({ + filename: 'trpc-client.ts', + write: true, + getContents() { + return ` + import * as trpc from '@trpc/client' + import type { router } from '~/server/trpc' + + const client = trpc.createTRPCClient({ + url: '${finalConfig.baseURL}${finalConfig.trpcURL}', + }) + + export const useClient = () => client + ` + }, }) - await fs.ensureDir(dirname(clientPath)) - - await fs.writeFile(clientPath, ` - import * as trpc from '@trpc/client' - import type { router } from '~/server/trpc' - - const client = trpc.createTRPCClient({ - url: '${finalConfig.baseURL}${finalConfig.trpcURL}', - }) + addTemplate({ + filename: 'trpc-handler.ts', + write: true, + getContents() { + return ` + import { createTRPCHandler } from 'trpc-nuxt/api' + import { useRuntimeConfig } from '#imports' + import * as functions from '~/server/trpc' - export const useClient = () => client - `) - - await fs.writeFile(handlerPath, ` - import { createTRPCHandler } from 'trpc-nuxt/api' - import { useRuntimeConfig } from '#imports' - import * as functions from '~/server/trpc' - - const { trpc: { trpcURL } } = useRuntimeConfig().public - - export default createTRPCHandler({ - ...functions, - trpcURL - }) - `) + const { trpc: { trpcURL } } = useRuntimeConfig().public + + export default createTRPCHandler({ + ...functions, + trpcURL + }) + ` + }, + }) }, }) diff --git a/src/runtime/client.ts b/src/runtime/client.ts index d7f5551..9de6e01 100644 --- a/src/runtime/client.ts +++ b/src/runtime/client.ts @@ -9,7 +9,7 @@ import type { ProcedureRecord, inferHandlerInput, inferProcedureInput, inferProc import type { TRPCClientErrorLike } from '@trpc/client' import { objectHash } from 'ohash' // @ts-expect-error: Resolved by Nuxt -import { useAsyncData, useState } from '#imports' +import { useAsyncData, useState } from '#app' // @ts-expect-error: Resolved by Nuxt import { useClient } from '#build/trpc-client' // @ts-expect-error: Resolved by Nuxt