Skip to content

Commit

Permalink
feat: create nitro.logger to control verbosity
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Mar 31, 2022
1 parent 1c1bf04 commit a91fd52
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 28 deletions.
31 changes: 16 additions & 15 deletions src/build.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import { relative, resolve, join } from 'pathe'
import consola from 'consola'
import * as rollup from 'rollup'
import fse from 'fs-extra'
import { watch } from 'chokidar'
import { debounce } from 'perfect-debounce'
import { printFSTree } from './utils/tree'
import { getRollupConfig } from './rollup/config'
import { prettyPath, writeFile, isDirectory, replaceAll, serializeTemplate } from './utils'
import { prettyPath, writeFile, isDirectory, serializeTemplate } from './utils'
import { GLOB_SCAN_PATTERN, scanHandlers } from './scan'
import type { Nitro } from './types'

Expand All @@ -23,12 +22,12 @@ export async function prepare (nitro: Nitro) {
}

async function cleanupDir (dir: string) {
consola.info('Cleaning up', prettyPath(dir))
// consola.info('Cleaning up', prettyPath(dir))
await fse.emptyDir(dir)
}

export async function copyPublicAssets (nitro: Nitro) {
consola.start('Generating public...')
nitro.logger.start('Generating public...')

const clientDist = resolve(nitro.options.buildDir, 'dist/client')
if (await isDirectory(clientDist)) {
Expand All @@ -40,7 +39,7 @@ export async function copyPublicAssets (nitro: Nitro) {
await fse.copy(publicDir, nitro.options.output.publicDir)
}

consola.success('Generated public ' + prettyPath(nitro.options.output.publicDir))
nitro.logger.success('Generated public ' + prettyPath(nitro.options.output.publicDir))
}

export async function build (nitro: Nitro) {
Expand Down Expand Up @@ -105,13 +104,13 @@ async function _build (nitro: Nitro) {
await scanHandlers(nitro)
await writeTypes(nitro)

consola.start('Building server...')
nitro.logger.start('Building server...')
const build = await rollup.rollup(nitro.options.rollupConfig).catch((error) => {
consola.error('Rollup error: ' + error.message)
nitro.logger.error('Rollup error: ' + error.message)
throw error
})

consola.start('Writing server bundle...')
nitro.logger.start('Writing server bundle...')
await build.write(nitro.options.rollupConfig.output)

// Write build info
Expand All @@ -126,8 +125,10 @@ async function _build (nitro: Nitro) {
}
await writeFile(nitroConfigPath, JSON.stringify(buildInfo, null, 2))

consola.success('Server built')
await printFSTree(nitro.options.output.serverDir)
nitro.logger.success('Server built')
if (nitro.options.logLevel > 1) {
await printFSTree(nitro.options.output.serverDir)
}
await nitro.hooks.callHook('nitro:compiled', nitro)

// Show deploy and preview hints
Expand All @@ -136,10 +137,10 @@ async function _build (nitro: Nitro) {
return input.replaceAll(/\s\.\/([^\s]+)/g, ` ${rOutput}/$1`)
}
if (buildInfo.commands.preview) {
consola.info(`You can preview this build using \`${rewriteRelativePaths(buildInfo.commands.preview)}\``)
nitro.logger.info(`You can preview this build using \`${rewriteRelativePaths(buildInfo.commands.preview)}\``)
}
if (buildInfo.commands.deploy) {
consola.info(`You can deploy this build using \`${rewriteRelativePaths(buildInfo.commands.deploy)}\``)
nitro.logger.info(`You can deploy this build using \`${rewriteRelativePaths(buildInfo.commands.deploy)}\``)
}

return {
Expand All @@ -165,14 +166,14 @@ function startRollupWatcher (nitro: Nitro) {
// Finished building all bundles
case 'END':
nitro.hooks.callHook('nitro:compiled', nitro)
consola.success('Nitro built', start ? `in ${Date.now() - start} ms` : '')
nitro.logger.success('Nitro built', start ? `in ${Date.now() - start} ms` : '')
nitro.hooks.callHook('nitro:dev:reload')
return

// Encountered an error while bundling
case 'ERROR':
consola.error('Rollup error: ' + event.error)
// consola.error(event.error)
nitro.logger.error('Rollup error: ' + event.error)
// nitro.logger.error(event.error)
}
})
return watcher
Expand Down
7 changes: 7 additions & 0 deletions src/nitro.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { resolve } from 'pathe'
import { createHooks } from 'hookable'
import { createUnimport } from 'unimport'
import consola from 'consola'
import type { NitroConfig, Nitro } from './types'
import { resolvePath } from './utils'
import { loadOptions } from './options'
Expand All @@ -14,9 +15,15 @@ export async function createNitro (config: NitroConfig = {}): Promise<Nitro> {
options,
hooks: createHooks(),
vfs: {},
logger: consola.withTag('nitro'),
scannedHandlers: []
}

// Logger config
if (nitro.options.logLevel !== undefined) {
nitro.logger.level = nitro.options.logLevel
}

// Init hooks
nitro.hooks.addHooks(nitro.options.hooks)

Expand Down
1 change: 1 addition & 0 deletions src/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const NitroDefaults: NitroConfig = {
crawlLinks: false,
routes: []
},
logLevel: 3,
publicDir: 'public',
buildDir: '.nitro',
generateDir: 'dist',
Expand Down
1 change: 1 addition & 0 deletions src/prerender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export async function prerender (nitro: Nitro) {
nitro = await createNitro({
...nitro.options._config,
rootDir: nitro.options.rootDir,
logLevel: 0,
preset: 'prerender'
})
await build(nitro)
Expand Down
20 changes: 10 additions & 10 deletions src/presets/browser.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { existsSync, promises as fsp } from 'fs'
import { resolve } from 'pathe'
import consola from 'consola'
import { joinURL } from 'ufo'
import { prettyPath } from '../utils'
import { defineNitroPreset } from '../preset'
import type { Nitro } from '../types'

export const browser = defineNitroPreset((_input) => {
// TODO
Expand Down Expand Up @@ -58,20 +58,20 @@ if ('serviceWorker' in navigator) {
'nitro:document' (tmpl) {
tmpl.contents = tmpl.contents.replace('</body>', script + '</body>')
},
async 'nitro:compiled' ({ output }: any) {
await fsp.writeFile(resolve(output.publicDir, 'sw.js'), `self.importScripts('${joinURL(baseURL, '_server/index.mjs')}');`, 'utf8')
async 'nitro:compiled' (nitro: Nitro) {
await fsp.writeFile(resolve(nitro.options.output.publicDir, 'sw.js'), `self.importScripts('${joinURL(baseURL, '_server/index.mjs')}');`, 'utf8')

// Temp fix
if (!existsSync(resolve(output.publicDir, 'index.html'))) {
await fsp.writeFile(resolve(output.publicDir, 'index.html'), html, 'utf8')
if (!existsSync(resolve(nitro.options.output.publicDir, 'index.html'))) {
await fsp.writeFile(resolve(nitro.options.publicDir, 'index.html'), html, 'utf8')
}
if (!existsSync(resolve(output.publicDir, '200.html'))) {
await fsp.writeFile(resolve(output.publicDir, '200.html'), html, 'utf8')
if (!existsSync(resolve(nitro.options.publicDir, '200.html'))) {
await fsp.writeFile(resolve(nitro.options.publicDir, '200.html'), html, 'utf8')
}
if (!existsSync(resolve(output.publicDir, '404.html'))) {
await fsp.writeFile(resolve(output.publicDir, '404.html'), html, 'utf8')
if (!existsSync(resolve(nitro.options.publicDir, '404.html'))) {
await fsp.writeFile(resolve(nitro.options.publicDir, '404.html'), html, 'utf8')
}
consola.info('Ready to deploy to static hosting:', prettyPath(output.publicDir as string))
nitro.logger.info('Ready to deploy to static hosting:', prettyPath(nitro.options.publicDir as string))
}
}
}
Expand Down
5 changes: 2 additions & 3 deletions src/presets/netlify.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { existsSync, promises as fsp } from 'fs'
import { join } from 'pathe'
import consola from 'consola'
import { defineNitroPreset } from '../preset'
import type { Nitro } from '../types'

Expand All @@ -17,10 +16,10 @@ export const netlify = defineNitroPreset({
if (existsSync(redirectsPath)) {
const currentRedirects = await fsp.readFile(redirectsPath, 'utf-8')
if (currentRedirects.match(/^\/\* /m)) {
consola.info('Not adding Nitro fallback to `_redirects` (as an existing fallback was found).')
nitro.logger.info('Not adding Nitro fallback to `_redirects` (as an existing fallback was found).')
return
}
consola.info('Adding Nitro fallback to `_redirects` to handle all unmatched routes.')
nitro.logger.info('Adding Nitro fallback to `_redirects` to handle all unmatched routes.')
contents = currentRedirects + '\n' + contents
}
await fsp.writeFile(redirectsPath, contents)
Expand Down
4 changes: 4 additions & 0 deletions src/types/nitro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { Preset as UnenvPreset } from 'unenv'
import type { Unimport, UnimportOptions } from 'unimport'
import type { PluginVisualizerOptions } from 'rollup-plugin-visualizer'
import type { NestedHooks, Hookable } from 'hookable'
import type { Consola, LogLevel } from 'consola'
import type { NodeExternalsOptions } from '../rollup/plugins/externals'
import type { StorageOptions } from '../rollup/plugins/storage'
import type { AssetOptions } from '../rollup/plugins/assets'
Expand All @@ -16,6 +17,7 @@ export interface Nitro {
vfs: Record<string, string>
hooks: Hookable<NitroHooks>
unimport?: Unimport
logger: Consola
}

export interface NitroHooks {
Expand Down Expand Up @@ -58,6 +60,8 @@ export interface NitroOptions {
publicPath: string
staticAssets: any

logLevel: LogLevel

routes: {
[path: string]: NitroRouteRule
},
Expand Down

0 comments on commit a91fd52

Please sign in to comment.