line_push/node_modules/@nuxt/loading-screen/lib/module.js
2022-07-21 03:28:35 +00:00

49 lines
1.0 KiB
JavaScript

module.exports = function NuxtLoadingScreen () {
if (!this.options.dev) {
return
}
const defu = require('defu')
const LoadingUI = require('./loading')
const { nuxt } = this
const baseURL = nuxt.options.router.base + '_loading'
const options = this.options.build.loadingScreen = defu(this.options.build.loadingScreen, {
baseURL,
baseURLAlt: baseURL,
altPort: false,
image: undefined,
colors: {}
})
const loading = new LoadingUI(options)
nuxt.options.serverMiddleware.push({
path: '/_loading',
handler: (req, res) => { loading.app(req, res) }
})
if (options.altPort) {
nuxt.hook('listen', async (_, { url }) => {
await loading.initAlt({ url })
})
}
nuxt.hook('close', async () => {
await loading.close()
})
nuxt.hook('bundler:progress', (states) => {
loading.setStates(states)
})
nuxt.hook('cli:buildError', (error) => {
loading.setError(error)
})
nuxt.hook('server:nuxt:renderLoading', (req, res) => {
loading.serveIndex(req, res)
})
}