2020-11-05 12:26:00 +00:00
|
|
|
import type { Module } from '@nuxt/types'
|
2020-11-05 11:28:39 +00:00
|
|
|
import { build, compileHTMLTemplate } 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-05 13:38:15 +00:00
|
|
|
const options = getoptions(nuxt.options)
|
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 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-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 13:38:15 +00:00
|
|
|
nuxt.hook('generate:done', () => buildSLS(options))
|
2020-11-05 11:28:39 +00:00
|
|
|
}
|
|
|
|
|
2020-11-05 13:38:15 +00:00
|
|
|
async function buildSLS (options) {
|
2020-11-05 11:28:39 +00:00
|
|
|
// Compile html template
|
2020-11-05 13:38:15 +00:00
|
|
|
await compileHTMLTemplate(options)
|
2020-11-05 11:28:39 +00:00
|
|
|
|
2020-11-05 13:38:15 +00:00
|
|
|
// Bundle target
|
|
|
|
await build(options)
|
2020-11-05 11:28:39 +00:00
|
|
|
}
|