mirror of
https://github.com/nuxt/nuxt.git
synced 2024-12-03 02:47:12 +00:00
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { existsSync, promises as fsp } from 'fs'
|
|
import { join } from 'pathe'
|
|
import consola from 'consola'
|
|
import { extendPreset } from '../utils'
|
|
import { NitroContext, NitroPreset } from '../context'
|
|
import { lambda } from './lambda'
|
|
|
|
export const netlify: NitroPreset = extendPreset(lambda, {
|
|
output: {
|
|
dir: '{{ _nuxt.rootDir }}/.netlify/functions-internal',
|
|
publicDir: '{{ _nuxt.rootDir }}/dist'
|
|
},
|
|
hooks: {
|
|
async 'nitro:compiled' (ctx: NitroContext) {
|
|
const redirectsPath = join(ctx.output.publicDir, '_redirects')
|
|
let contents = '/* /.netlify/functions/server 200'
|
|
if (existsSync(redirectsPath)) {
|
|
const currentRedirects = await fsp.readFile(redirectsPath, 'utf-8')
|
|
if (currentRedirects.match(/^\/\* /m)) {
|
|
consola.info('Not adding Nitro fallback to `_redirects` (as an existing fallback was found).')
|
|
return
|
|
}
|
|
consola.info('Adding Nitro fallback to `_redirects` to handle all unmatched routes.')
|
|
contents = currentRedirects + '\n' + contents
|
|
}
|
|
await fsp.writeFile(redirectsPath, contents)
|
|
},
|
|
'nitro:rollup:before' (ctx: NitroContext) {
|
|
ctx.rollupConfig.output.entryFileNames = 'server.ts'
|
|
}
|
|
},
|
|
ignore: [
|
|
'netlify.toml',
|
|
'_redirects'
|
|
]
|
|
})
|
|
|
|
// eslint-disable-next-line
|
|
export const netlify_builder: NitroPreset = extendPreset(netlify, {
|
|
entry: '{{ _internal.runtimeDir }}/entries/netlify_builder'
|
|
})
|