[READ-ONLY] Mirror of https://github.com/danielroe/nuxt-timings-module.
1.1 kB
46 lines
1// eslint-disable-next-line
2import type { Module } from '@nuxt/types'
3import { defineNuxtModule } from '@nuxt/kit'
4
5import { bold } from 'chalk'
6import consola from 'consola'
7
8import { name } from '../package.json'
9import { registerFetchTimings } from './fetch'
10import { registerPluginTimings } from './plugins'
11import { registerStoreTimings } from './store'
12
13const CONFIG_KEY = 'timings'
14type ModuleOptions = {
15 enabled?: boolean
16}
17
18export default defineNuxtModule(nuxt => ({
19 name,
20 configKey: CONFIG_KEY,
21 defaults: { enabled: nuxt.options.dev },
22 setup (options, nuxt) {
23 if (!options.enabled) {
24 return
25 }
26
27 consola.info(`Enabling ${bold('nuxt-timings')}.`)
28
29 nuxt.options.server.timing = { total: true } as any
30
31 registerPluginTimings()
32 registerStoreTimings()
33 registerFetchTimings()
34 }
35}))
36
37declare module '@nuxt/types' {
38 interface NuxtConfig {
39 [CONFIG_KEY]?: ModuleOptions;
40 } // Nuxt 2.14+
41 interface Configuration {
42 [CONFIG_KEY]?: ModuleOptions;
43 } // Nuxt 2.9 - 2.13
44}
45
46export type { ModuleOptions }