diff --git a/packages/next/src/build/adapter/build-complete.ts b/packages/next/src/build/adapter/build-complete.ts index ce32c1f307b0e..e3d77bf2cfd47 100644 --- a/packages/next/src/build/adapter/build-complete.ts +++ b/packages/next/src/build/adapter/build-complete.ts @@ -966,6 +966,18 @@ export async function handleBuildComplete({ return {} as Record } ) + + // If this is a parallel route we just need to merge + // the assets as they share the same pathname + const existingOutput = appOutputMap[normalizedPage] + if (existingOutput) { + Object.assign(existingOutput.assets, assets) + existingOutput.assets[path.relative(tracingRoot, pageFile)] = + pageFile + + continue + } + const functionConfig = functionsConfigManifest.functions[normalizedPage] || {} diff --git a/test/production/adapter-config/adapter-config-export.test.ts b/test/production/adapter-config/adapter-config-export.test.ts index 423d61d435b0f..efe0d87374080 100644 --- a/test/production/adapter-config/adapter-config-export.test.ts +++ b/test/production/adapter-config/adapter-config-export.test.ts @@ -23,6 +23,9 @@ describe('adapter-config export', () => { 'pages/api/node-pages.ts', 'pages/edge-pages/index.tsx', 'pages/node-pages/index.tsx', + 'app/node-app/[slug]/page.tsx', + 'app/node-app/@dialog/default.tsx', + 'app/node-app/@dialog/[slug]/page.tsx', ] for (const file of nonExportFiles) { diff --git a/test/production/adapter-config/app/node-app/@dialog/[slug]/page.tsx b/test/production/adapter-config/app/node-app/@dialog/[slug]/page.tsx new file mode 100644 index 0000000000000..ef1b249cc1847 --- /dev/null +++ b/test/production/adapter-config/app/node-app/@dialog/[slug]/page.tsx @@ -0,0 +1,7 @@ +export default function Page() { + return ( + <> +

@dialog parallel route for /node-app/[slug]

+ + ) +} diff --git a/test/production/adapter-config/app/node-app/@dialog/default.tsx b/test/production/adapter-config/app/node-app/@dialog/default.tsx new file mode 100644 index 0000000000000..31f55b1a9cf6c --- /dev/null +++ b/test/production/adapter-config/app/node-app/@dialog/default.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return 'default dialog' +} diff --git a/test/production/adapter-config/app/node-app/[slug]/page.tsx b/test/production/adapter-config/app/node-app/[slug]/page.tsx new file mode 100644 index 0000000000000..79b2a33b9cedc --- /dev/null +++ b/test/production/adapter-config/app/node-app/[slug]/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return <>/node-app/[slug] +} diff --git a/test/production/adapter-config/app/node-app/layout.tsx b/test/production/adapter-config/app/node-app/layout.tsx new file mode 100644 index 0000000000000..3a879d55332f3 --- /dev/null +++ b/test/production/adapter-config/app/node-app/layout.tsx @@ -0,0 +1,8 @@ +export default function Layout({ dialog, children }: any) { + return ( + <> + {dialog} + {children} + + ) +} diff --git a/test/production/adapter-config/my-adapter.mjs b/test/production/adapter-config/my-adapter.mjs index e961d8308cf72..212cc5af9fa0c 100644 --- a/test/production/adapter-config/my-adapter.mjs +++ b/test/production/adapter-config/my-adapter.mjs @@ -5,6 +5,7 @@ import fs from 'fs' const myAdapter = { name: 'my-custom-adapter', modifyConfig: (config, { phase }) => { + if (process.env.NODE_ENV !== 'production') return config if (typeof phase !== 'string') { throw new Error(`invalid phase value provided to modifyConfig ${phase}`) }