mirror of
https://github.com/nuxt/nuxt.git
synced 2024-12-04 19:37:18 +00:00
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { join } from 'upath'
|
|
import { existsSync, readFile, writeFile } from 'fs-extra'
|
|
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',
|
|
publicDir: '{{ _nuxt.rootDir }}/dist'
|
|
},
|
|
hooks: {
|
|
async 'nitro:compiled' (ctx: NitroContext) {
|
|
const redirectsPath = join(ctx._nuxt.rootDir, '_redirects')
|
|
let contents = '/* /.netlify/functions/server 200'
|
|
if (existsSync(redirectsPath)) {
|
|
const currentRedirects = await 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 writeFile(redirectsPath, contents)
|
|
}
|
|
},
|
|
ignore: [
|
|
'netlify.toml',
|
|
'_redirects'
|
|
]
|
|
})
|
|
|
|
// eslint-disable-next-line
|
|
export const netlify_builder: NitroPreset = extendPreset(netlify, {
|
|
entry: '{{ _internal.runtimeDir }}/entries/netlify_builder'
|
|
})
|