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'
|
|
|
|
import { getBaseConfig } from './config'
|
|
|
|
|
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
|
|
|
|
const baseConfig = getBaseConfig(nuxt.options)
|
|
|
|
|
|
|
|
if (baseConfig.minify !== false) {
|
|
|
|
nuxt.options.build._minifyServer = true
|
|
|
|
}
|
|
|
|
|
|
|
|
nuxt.options.build.standalone = true
|
|
|
|
|
|
|
|
nuxt.hook('generate:cache:ignore', (ignore) => {
|
|
|
|
ignore.push(baseConfig.slsDir)
|
|
|
|
})
|
|
|
|
|
2020-11-05 12:02:57 +00:00
|
|
|
nuxt.hook('generate:page', (page) => {
|
|
|
|
// TODO: Use ssrContext
|
|
|
|
if (!baseConfig.static.includes(page.route)) {
|
|
|
|
page.exclude = true
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2020-11-05 11:28:39 +00:00
|
|
|
nuxt.hook('generate:done', () => buildSLS(baseConfig))
|
|
|
|
}
|
|
|
|
|
|
|
|
async function buildSLS (baseConfig) {
|
|
|
|
// Compile html template
|
|
|
|
await compileHTMLTemplate(baseConfig)
|
|
|
|
|
|
|
|
// Bundle for each target
|
|
|
|
for (const target of baseConfig.targets) {
|
|
|
|
if (baseConfig.target && target.target !== baseConfig.target) {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
await build(baseConfig, target)
|
|
|
|
}
|
|
|
|
}
|