Compare commits

...

6 Commits

Author SHA1 Message Date
Saeid Zareie
9c096a4a10
Merge 66c3549e1e into b0729241bc 2025-02-18 10:07:15 +07:00
Saeid Zareie
66c3549e1e
Merge branch 'main' into payload-extraction 2025-02-07 00:00:25 +03:30
autofix-ci[bot]
56a84a1fe4
[autofix.ci] apply automated fixes 2025-01-27 10:43:27 +00:00
Saeid Zareie
ce6d3c1b9e fix: removed duplicate plugin addition 2025-01-27 14:10:38 +03:30
Saeid Zareie
a3c63cd9d6 Merge branch 'main' of https://github.com/nuxt/nuxt into payload-extraction 2025-01-27 13:51:22 +03:30
Saeid Zareie
b3d5c9836e feat: adding dev support for payload extraction 2025-01-27 13:18:30 +03:30
4 changed files with 10 additions and 14 deletions

View File

@ -9,12 +9,10 @@ import { appManifest as isAppManifestEnabled } from '#build/nuxt.config.mjs'
export default defineNuxtPlugin({ export default defineNuxtPlugin({
name: 'nuxt:payload', name: 'nuxt:payload',
setup (nuxtApp) { setup (nuxtApp) {
// TODO: Support dev
if (import.meta.dev) { return }
// Load payload after middleware & once final route is resolved // Load payload after middleware & once final route is resolved
useRouter().beforeResolve(async (to, from) => { useRouter().beforeResolve(async (to, from) => {
if (to.path === from.path) { return } // Forcefully load payload in dev mode, to support payload extraction at page refresh.
if (to.path === from.path && !import.meta.dev) { return }
const payload = await loadPayload(to.path) const payload = await loadPayload(to.path)
if (!payload) { return } if (!payload) { return }
Object.assign(nuxtApp.static.data, payload.data) Object.assign(nuxtApp.static.data, payload.data)

View File

@ -659,7 +659,7 @@ async function initNuxt (nuxt: Nuxt) {
} }
// Add prerender payload support // Add prerender payload support
if (!nuxt.options.dev && nuxt.options.experimental.payloadExtraction) { if (nuxt.options.experimental.payloadExtraction) {
addPlugin(resolve(nuxt.options.appDir, 'plugins/payload.client')) addPlugin(resolve(nuxt.options.appDir, 'plugins/payload.client'))
} }
@ -779,10 +779,6 @@ export default defineNuxtPlugin({
nitro.options.replace['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction) nitro.options.replace['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
nitro.options._config.replace!['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction) nitro.options._config.replace!['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
if (!nuxt.options.dev && nuxt.options.experimental.payloadExtraction) {
addPlugin(resolve(nuxt.options.appDir, 'plugins/payload.client'))
}
// Show compatibility version banner when Nuxt is running with a compatibility version // Show compatibility version banner when Nuxt is running with a compatibility version
// that is different from the current major version // that is different from the current major version
if (!(satisfies(nuxt._version, nuxt.options.future.compatibilityVersion + '.x'))) { if (!(satisfies(nuxt._version, nuxt.options.future.compatibilityVersion + '.x'))) {

View File

@ -325,7 +325,9 @@ export default defineRenderHandler(async (event): Promise<Partial<RenderResponse
// Whether we are prerendering route // Whether we are prerendering route
const _PAYLOAD_EXTRACTION = import.meta.prerender && process.env.NUXT_PAYLOAD_EXTRACTION && !ssrContext.noSSR && !isRenderingIsland const _PAYLOAD_EXTRACTION = import.meta.prerender && process.env.NUXT_PAYLOAD_EXTRACTION && !ssrContext.noSSR && !isRenderingIsland
const payloadURL = _PAYLOAD_EXTRACTION ? joinURL(ssrContext.runtimeConfig.app.cdnURL || ssrContext.runtimeConfig.app.baseURL, url, process.env.NUXT_JSON_PAYLOADS ? '_payload.json' : '_payload.js') + '?' + ssrContext.runtimeConfig.app.buildId : undefined const payloadURL = _PAYLOAD_EXTRACTION ? joinURL(ssrContext.runtimeConfig.app.cdnURL || ssrContext.runtimeConfig.app.baseURL, url, process.env.NUXT_JSON_PAYLOADS ? '_payload.json' : '_payload.js') + '?' + ssrContext.runtimeConfig.app.buildId : undefined
if (import.meta.prerender) {
const pagePrerenderedInDev = import.meta.dev && (!!routeOptions.prerender || isRenderingPayload)
if (pagePrerenderedInDev || import.meta.prerender) {
ssrContext.payload.prerenderedAt = Date.now() ssrContext.payload.prerenderedAt = Date.now()
} }

View File

@ -39,10 +39,6 @@ describe('resolveApp', () => {
}, },
], ],
"plugins": [ "plugins": [
{
"mode": "client",
"src": "<repoRoot>/packages/nuxt/src/app/plugins/payload.client.ts",
},
{ {
"mode": "client", "mode": "client",
"src": "<repoRoot>/packages/nuxt/src/app/plugins/navigation-repaint.client.ts", "src": "<repoRoot>/packages/nuxt/src/app/plugins/navigation-repaint.client.ts",
@ -63,6 +59,10 @@ describe('resolveApp', () => {
"mode": "client", "mode": "client",
"src": "<repoRoot>/packages/nuxt/src/app/plugins/chunk-reload.client.ts", "src": "<repoRoot>/packages/nuxt/src/app/plugins/chunk-reload.client.ts",
}, },
{
"mode": "client",
"src": "<repoRoot>/packages/nuxt/src/app/plugins/payload.client.ts",
},
{ {
"filename": "components.plugin.mjs", "filename": "components.plugin.mjs",
"getContents": [Function], "getContents": [Function],