From 7e187e5c9358f6bee82317897a416be4052fd337 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 31 May 2023 22:29:14 +0100 Subject: [PATCH] fix: respect `dir` option from module for ipx resolves #817 --- src/ipx.ts | 2 +- src/module.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ipx.ts b/src/ipx.ts index 011269888..ea67fd4fd 100644 --- a/src/ipx.ts +++ b/src/ipx.ts @@ -35,7 +35,7 @@ export const ipxSetup: ProviderSetup = async (providerOptions, moduleOptions) => nitro.options._config.runtimeConfig = nitro.options._config.runtimeConfig || {} nitro.options._config.runtimeConfig.ipx = { ...ipxOptions } // Use relative path for built app - ipxOptions.dir = relative(nitro.options.output.serverDir, nitro.options.output.publicDir) + ipxOptions.dir = relative(nitro.options.output.serverDir, moduleOptions.dir) nitro.options.runtimeConfig.ipx = ipxOptions }) nuxt.options.serverHandlers.push({ diff --git a/src/module.ts b/src/module.ts index 3fec81429..13d078768 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,5 +1,6 @@ import { parseURL, withLeadingSlash } from 'ufo' import { defineNuxtModule, addTemplate, addImports, createResolver, addComponent, addPlugin } from '@nuxt/kit' +import { resolve } from 'pathe' import { resolveProviders, detectProvider } from './provider' import type { ImageProviders, ImageOptions, InputProvider, CreateImageOptions } from './types' @@ -20,10 +21,10 @@ export interface ModuleOptions extends ImageProviders { export * from './types' export default defineNuxtModule({ - defaults: { + defaults: nuxt => ({ staticFilename: '[publicPath]/image/[hash][ext]', provider: 'auto', - dir: '', + dir: nuxt.options.dir.public, presets: {}, domains: [] as string[], sharp: {}, @@ -40,7 +41,7 @@ export default defineNuxtModule({ internalUrl: '', providers: {}, alias: {} - }, + }), meta: { name: '@nuxt/image', configKey: 'image', @@ -51,6 +52,9 @@ export default defineNuxtModule({ async setup (options, nuxt) { const resolver = createResolver(import.meta.url) + // fully resolve directory + options.dir = resolve(nuxt.options.srcDir, options.dir) + // Normalize domains to hostname options.domains = options.domains.map((d) => { if (!d.startsWith('http')) { d = 'http://' + d }