2020-11-05 12:26:00 +00:00
|
|
|
import type { Module } from '@nuxt/types'
|
2020-11-05 21:59:14 +00:00
|
|
|
import { build } from './build'
|
2020-11-05 13:38:15 +00:00
|
|
|
import { getoptions } from './config'
|
2020-11-05 11:28:39 +00:00
|
|
|
|
2020-11-05 12:26:00 +00:00
|
|
|
export default <Module> function slsModule () {
|
2020-11-05 11:28:39 +00:00
|
|
|
const { nuxt } = this
|
|
|
|
|
|
|
|
if (nuxt.options.dev) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Config
|
2020-11-06 13:46:17 +00:00
|
|
|
const options = getoptions(nuxt)
|
2020-11-05 11:28:39 +00:00
|
|
|
|
2020-11-05 13:38:15 +00:00
|
|
|
if (options.minify !== false) {
|
2020-11-05 11:28:39 +00:00
|
|
|
nuxt.options.build._minifyServer = true
|
|
|
|
}
|
|
|
|
|
|
|
|
nuxt.options.build.standalone = true
|
|
|
|
|
2020-11-05 19:13:50 +00:00
|
|
|
nuxt.options.generate.crawler = false
|
2020-11-05 20:42:40 +00:00
|
|
|
if (Array.isArray(nuxt.options.generate.routes)) {
|
|
|
|
nuxt.options.generate.routes = Array.from(new Set([
|
|
|
|
...nuxt.options.generate.routes,
|
|
|
|
...options.static
|
|
|
|
]))
|
|
|
|
}
|
2020-11-05 19:13:50 +00:00
|
|
|
|
2020-11-05 21:40:25 +00:00
|
|
|
if (options.nuxtHooks) {
|
|
|
|
nuxt.addHooks(options.nuxtHooks)
|
|
|
|
}
|
|
|
|
|
2020-11-05 11:28:39 +00:00
|
|
|
nuxt.hook('generate:cache:ignore', (ignore) => {
|
2020-11-05 13:38:15 +00:00
|
|
|
ignore.push(options.slsDir)
|
2020-11-06 12:14:49 +00:00
|
|
|
ignore.push(options.targetDir)
|
2020-11-06 12:41:33 +00:00
|
|
|
ignore.push(...options.generateIgnore)
|
2020-11-05 11:28:39 +00:00
|
|
|
})
|
|
|
|
|
2020-11-05 12:02:57 +00:00
|
|
|
nuxt.hook('generate:page', (page) => {
|
|
|
|
// TODO: Use ssrContext
|
2020-11-05 13:38:15 +00:00
|
|
|
if (!options.static.includes(page.route)) {
|
2020-11-05 12:02:57 +00:00
|
|
|
page.exclude = true
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2020-11-05 21:56:40 +00:00
|
|
|
nuxt.hook('generate:done', () => build(options))
|
2020-11-05 11:28:39 +00:00
|
|
|
}
|