refactor(core): use nitro runtimeConfig to pass mcfly config file path
This commit is contained in:
parent
3b8c6e6d11
commit
1c9bbdb10e
5 changed files with 27 additions and 16 deletions
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]
|
||||||
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue