diff --git a/packages/core/cli/commands/build.mjs b/packages/core/cli/commands/build.mjs index 29492dd..825384c 100644 --- a/packages/core/cli/commands/build.mjs +++ b/packages/core/cli/commands/build.mjs @@ -11,7 +11,7 @@ import { prerender, } from 'nitropack' import { fileURLToPath } from 'node:url' -import { getNitroConfig } from '../../get-nitro-config.js' +import { getMcFlyConfig, getNitroConfig } from '../../get-nitro-config.js' import { copyFileSync } from 'node:fs' async function _build(args) { @@ -19,7 +19,8 @@ async function _build(args) { try { const rootDir = resolve(args.dir || args._dir || '.') - const nitroConfig = await getNitroConfig() + const [mcflyConfig, appConfigFile] = await getMcFlyConfig() + const nitroConfig = await getNitroConfig(mcflyConfig) console.log('>>> preset arg', args.preset) @@ -41,6 +42,8 @@ async function _build(args) { handler: resolve(__dirname, '../../route-middleware.js'), }) + nitro.options.runtimeConfig.appConfigFile = appConfigFile + nitro.hooks.hook('compiled', () => { console.log('>>> Nitro compiled', rootDir) diff --git a/packages/core/cli/commands/prepare.mjs b/packages/core/cli/commands/prepare.mjs index 4dcb0b6..15f7563 100755 --- a/packages/core/cli/commands/prepare.mjs +++ b/packages/core/cli/commands/prepare.mjs @@ -4,7 +4,7 @@ import { consola } from 'consola' import { defineCommand } from 'citty' import { resolve } from 'pathe' import { createNitro, writeTypes } from 'nitropack' -import { getNitroConfig } from '../../get-nitro-config.js' +import { getMcFlyConfig, getNitroConfig } from '../../get-nitro-config.js' async function prepare(args) { consola.start('Preparing McFly workspace...') @@ -13,7 +13,8 @@ async function prepare(args) { try { const rootDir = resolve(args.dir || args._dir || '.') - const nitroConfig = await getNitroConfig() + const [mcflyConfig] = await getMcFlyConfig() + const nitroConfig = await getNitroConfig(mcflyConfig) const nitro = await createNitro({ rootDir, ...nitroConfig }) await writeTypes(nitro) diff --git a/packages/core/cli/commands/serve.mjs b/packages/core/cli/commands/serve.mjs index d8d51af..fc4767f 100644 --- a/packages/core/cli/commands/serve.mjs +++ b/packages/core/cli/commands/serve.mjs @@ -14,7 +14,7 @@ import { import { resolve } from 'pathe' import { fileURLToPath } from 'node:url' import { dirname } from 'pathe' -import { getNitroConfig } from '../../get-nitro-config.js' +import { getMcFlyConfig, getNitroConfig } from '../../get-nitro-config.js' const hmrKeyRe = /^runtimeConfig\.|routeRules\./ const __filename = fileURLToPath(import.meta.url) @@ -57,7 +57,8 @@ async function serve(args) { await nitro.close() } - const nitroConfig = await getNitroConfig() + const [mcflyConfig, appConfigFile] = await getMcFlyConfig() + const nitroConfig = await getNitroConfig(mcflyConfig) // create new nitro nitro = await createNitro( @@ -91,6 +92,7 @@ async function serve(args) { } ) nitro.hooks.hookOnce('restart', reload) + nitro.options.runtimeConfig.appConfigFile = appConfigFile nitro.options.handlers.push({ middleware: true, diff --git a/packages/core/get-nitro-config.js b/packages/core/get-nitro-config.js index c6c0ab5..fffd42b 100644 --- a/packages/core/get-nitro-config.js +++ b/packages/core/get-nitro-config.js @@ -8,18 +8,24 @@ import { mcflyNitroConfig } from './mcfly-nitro-config.js' /** * @returns {Promise} */ -export async function getNitroConfig() { +export async function getNitroConfig(mcflyConfig = {}) { const { config: nitroConfig } = await loadConfig({ name: 'nitro' }) - const { config: mcflyConfig } = await loadConfig({ name: 'mcfly' }) - return { - // nitro config within user's mcfly.config.mjs - ...(mcflyConfig.nitro ?? {}), + // nitro config in mcfly config + ...mcflyConfig.nitro, - // nitro config from nitro.config.mjs + // nitro config from nitro config ...(nitroConfig ?? {}), // McFly standard nitro config ...mcflyNitroConfig, } } + +export async function getMcFlyConfig() { + const { config: mcflyConfig, configFile } = await loadConfig({ + name: 'mcfly', + }) + + return [mcflyConfig, configFile] +} diff --git a/packages/core/route-middleware.js b/packages/core/route-middleware.js index 9665cf3..1aed729 100644 --- a/packages/core/route-middleware.js +++ b/packages/core/route-middleware.js @@ -3,7 +3,7 @@ import { useStorage } from 'nitropack/runtime' import { createHooks } from 'hookable' import { consola } from 'consola' import { colorize } from 'consola/utils' -import { resolve } from 'pathe' +import { useRuntimeConfig } from 'nitropack/runtime' import { hooks as mcflyHooks, @@ -28,10 +28,9 @@ export default eventHandler(async (event) => { const hooks = createHooks() Object.keys(mcflyHooks).forEach((hookName) => hooks.addHooks(hookName)) const { path } = event + const { appConfigFile } = useRuntimeConfig() - // TODO: detect config file type - const mcflyConfigPath = resolve('./mcfly.config.mjs') - let { default: configFn } = await import(mcflyConfigPath) + let { default: configFn } = await import(appConfigFile) let config = configFn() const storage = useStorage()