refactor(core): use nitro runtimeConfig to pass mcfly config file path

This commit is contained in:
Ayo Ayco 2025-01-14 01:01:00 +01:00
parent 3b8c6e6d11
commit 1c9bbdb10e
5 changed files with 27 additions and 16 deletions

View file

@ -11,7 +11,7 @@ import {
prerender, prerender,
} from 'nitropack' } from 'nitropack'
import { fileURLToPath } from 'node:url' 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' import { copyFileSync } from 'node:fs'
async function _build(args) { async function _build(args) {
@ -19,7 +19,8 @@ async function _build(args) {
try { try {
const rootDir = resolve(args.dir || args._dir || '.') 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) console.log('>>> preset arg', args.preset)
@ -41,6 +42,8 @@ async function _build(args) {
handler: resolve(__dirname, '../../route-middleware.js'), handler: resolve(__dirname, '../../route-middleware.js'),
}) })
nitro.options.runtimeConfig.appConfigFile = appConfigFile
nitro.hooks.hook('compiled', () => { nitro.hooks.hook('compiled', () => {
console.log('>>> Nitro compiled', rootDir) console.log('>>> Nitro compiled', rootDir)

View file

@ -4,7 +4,7 @@ import { consola } from 'consola'
import { defineCommand } from 'citty' import { defineCommand } from 'citty'
import { resolve } from 'pathe' import { resolve } from 'pathe'
import { createNitro, writeTypes } from 'nitropack' import { createNitro, writeTypes } from 'nitropack'
import { getNitroConfig } from '../../get-nitro-config.js' import { getMcFlyConfig, getNitroConfig } from '../../get-nitro-config.js'
async function prepare(args) { async function prepare(args) {
consola.start('Preparing McFly workspace...') consola.start('Preparing McFly workspace...')
@ -13,7 +13,8 @@ async function prepare(args) {
try { try {
const rootDir = resolve(args.dir || args._dir || '.') 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 }) const nitro = await createNitro({ rootDir, ...nitroConfig })
await writeTypes(nitro) await writeTypes(nitro)

View file

@ -14,7 +14,7 @@ import {
import { resolve } from 'pathe' import { resolve } from 'pathe'
import { fileURLToPath } from 'node:url' import { fileURLToPath } from 'node:url'
import { dirname } from 'pathe' import { dirname } from 'pathe'
import { getNitroConfig } from '../../get-nitro-config.js' import { getMcFlyConfig, getNitroConfig } from '../../get-nitro-config.js'
const hmrKeyRe = /^runtimeConfig\.|routeRules\./ const hmrKeyRe = /^runtimeConfig\.|routeRules\./
const __filename = fileURLToPath(import.meta.url) const __filename = fileURLToPath(import.meta.url)
@ -57,7 +57,8 @@ async function serve(args) {
await nitro.close() await nitro.close()
} }
const nitroConfig = await getNitroConfig() const [mcflyConfig, appConfigFile] = await getMcFlyConfig()
const nitroConfig = await getNitroConfig(mcflyConfig)
// create new nitro // create new nitro
nitro = await createNitro( nitro = await createNitro(
@ -91,6 +92,7 @@ async function serve(args) {
} }
) )
nitro.hooks.hookOnce('restart', reload) nitro.hooks.hookOnce('restart', reload)
nitro.options.runtimeConfig.appConfigFile = appConfigFile
nitro.options.handlers.push({ nitro.options.handlers.push({
middleware: true, middleware: true,

View file

@ -8,18 +8,24 @@ import { mcflyNitroConfig } from './mcfly-nitro-config.js'
/** /**
* @returns {Promise<NitroConfig>} * @returns {Promise<NitroConfig>}
*/ */
export async function getNitroConfig() { export async function getNitroConfig(mcflyConfig = {}) {
const { config: nitroConfig } = await loadConfig({ name: 'nitro' }) const { config: nitroConfig } = await loadConfig({ name: 'nitro' })
const { config: mcflyConfig } = await loadConfig({ name: 'mcfly' })
return { return {
// nitro config within user's mcfly.config.mjs // nitro config in mcfly config
...(mcflyConfig.nitro ?? {}), ...mcflyConfig.nitro,
// nitro config from nitro.config.mjs // nitro config from nitro config
...(nitroConfig ?? {}), ...(nitroConfig ?? {}),
// McFly standard nitro config // McFly standard nitro config
...mcflyNitroConfig, ...mcflyNitroConfig,
} }
} }
export async function getMcFlyConfig() {
const { config: mcflyConfig, configFile } = await loadConfig({
name: 'mcfly',
})
return [mcflyConfig, configFile]
}

View file

@ -3,7 +3,7 @@ import { useStorage } from 'nitropack/runtime'
import { createHooks } from 'hookable' import { createHooks } from 'hookable'
import { consola } from 'consola' import { consola } from 'consola'
import { colorize } from 'consola/utils' import { colorize } from 'consola/utils'
import { resolve } from 'pathe' import { useRuntimeConfig } from 'nitropack/runtime'
import { import {
hooks as mcflyHooks, hooks as mcflyHooks,
@ -28,10 +28,9 @@ export default eventHandler(async (event) => {
const hooks = createHooks() const hooks = createHooks()
Object.keys(mcflyHooks).forEach((hookName) => hooks.addHooks(hookName)) Object.keys(mcflyHooks).forEach((hookName) => hooks.addHooks(hookName))
const { path } = event const { path } = event
const { appConfigFile } = useRuntimeConfig()
// TODO: detect config file type let { default: configFn } = await import(appConfigFile)
const mcflyConfigPath = resolve('./mcfly.config.mjs')
let { default: configFn } = await import(mcflyConfigPath)
let config = configFn() let config = configFn()
const storage = useStorage() const storage = useStorage()