No description
Find a file
OJ Kwon 3c3744631e
fix(loader_tree): propagate metadata to corresponding layout (#56956)
### What?

- fixes test 17553c5e25/test/e2e/app-dir/metadata/metadata.test.ts (L487)

The way next.js collects static metadata is read static metadata, and then read layout metadata to merge multiple metadatas into a single layout path (17553c5e25/packages/next/src/lib/metadata/resolve-metadata.ts (L347-L352))

When turbopack creates LoaderTree for the corresponding directory tree, it extracts `page` but skips metadata  in result there are orphan components that have a metadata doesn't have layout metadata, as well as a component have a layout doesn't have metadata. Latter is being rendered as a page (since it have correct layout), which eventually falls back to the default metadata instead.

PR trickles down the metadata when extracting page (creating a new component with `page`) to consolidates those.

Also PR expands Metadata to have base_page property to capture where it has been originally exists, as we clone down metadata then do `fillMetadataSegment` against the current page where LoaderTree is being created it creates a wrong relative path. For example, currently

```
/icon.svg
 - opengragph/
      - static -> path being `/opengraph/.../icon.svg` instead of `/icon.svg`
```

When recursively traverse directory tree, capture each components with corresponding base_page to calculate instead.

Unfortunately this doesn't make pass all of the metadata tests; there are lot to dig more. Would like to scope PR in a reasonable size.


Closes WEB-1795
2023-10-21 21:24:40 +00:00
.cargo Update rust-toolchain to nightly-2023-10-06 (#56541) 2023-10-07 09:05:44 +00:00
.config Remove next-dev and its test suite and benchmarks (#55983) 2023-09-26 05:22:39 +02:00
.devcontainer re-enable next-dev-tests (#47087) 2023-03-14 16:05:19 +01:00
.github chore: Add condition to skip update-fonts workflow on forks (#57165) 2023-10-21 00:50:36 -07:00
.husky Replace pre-commit with husky (#38350) 2022-07-06 11:14:16 -05:00
.vscode Add next.config.js options to turbopack warning file (#56207) 2023-09-29 14:08:40 +02:00
bench chore: remove chalk in favor of picocolors (#55992) 2023-09-27 21:00:52 +00:00
contributing change those->some for clarity (#56688) 2023-10-12 16:14:08 +00:00
docs Remove the experimental serverActions flag (#57145) 2023-10-20 20:45:25 +00:00
errors chore(next/image)!: mark domains as deprecated in favor remotePatterns (#57062) 2023-10-19 20:24:48 +00:00
examples chore(next/image)!: mark domains as deprecated in favor remotePatterns (#57062) 2023-10-19 20:24:48 +00:00
packages fix(loader_tree): propagate metadata to corresponding layout (#56956) 2023-10-21 21:24:40 +00:00
scripts chore: revert back to moving files w/ fs-extra (#57030) 2023-10-19 13:29:19 +00:00
test fix(loader_tree): propagate metadata to corresponding layout (#56956) 2023-10-21 21:24:40 +00:00
.alexignore Integrate next-* crates from Turbopack (#47019) 2023-03-13 14:33:17 +01:00
.alexrc docs: Add "special" to the Alex allowlist (#48021) 2023-04-06 16:32:06 +02:00
.eslintignore chore: replace issue triaing actions with nissuer (#55525) 2023-09-19 11:11:00 +00:00
.eslintrc.json Update eslint config (#57146) 2023-10-20 19:15:24 +00:00
.gitattributes chore: update gitattributes with linguist-vendored (#54683) 2023-08-28 21:50:19 +00:00
.gitignore Optimize webpack memory cache garbage collection (#54397) 2023-08-23 15:46:32 +02:00
.node-version Update .node-version (#56460) 2023-10-05 07:40:12 +00:00
.npmrc fix: npm publish provenance permissions (#48757) 2023-04-24 14:08:55 +00:00
.prettierignore Remove next-dev and its test suite and benchmarks (#55983) 2023-09-26 05:22:39 +02:00
.prettierignore_staged chore: replace issue triaing actions with nissuer (#55525) 2023-09-19 11:11:00 +00:00
.prettierrc.json Prettier trailingComma default value to es5 since 2.0 (#14391) 2020-06-22 13:25:24 +02:00
.rustfmt.toml build(cargo): move workspaces manifest to top level (#48198) 2023-04-19 18:38:36 +02:00
azure-pipelines.yml chore: lower Node.js version requirement (#56943) 2023-10-17 23:15:31 +02:00
Cargo.lock Turbopack: support more server code in tracing error stack frames (#57156) 2023-10-20 17:09:10 -07:00
Cargo.toml chore: move layer from chunking context to asset context (#57149) 2023-10-21 02:05:00 +02:00
CODE_OF_CONDUCT.md updated code of conduct to v2.1 (#34208) 2022-02-10 18:11:42 -06:00
contributing.md chore: improve repo templates (#46629) 2023-03-01 09:25:51 -08:00
jest.config.js chore: drop form-data (#57141) 2023-10-20 19:25:42 +00:00
jest.replay.config.js Add Replay integration for dev e2e tests (#40955) 2022-09-29 14:45:10 -07:00
lerna.json v13.5.7-canary.13 2023-10-20 23:23:41 +00:00
license.md Update license year (#44403) 2023-01-01 11:12:49 +01:00
lint-staged.config.js add cargo fmt to lint staged (#56430) 2023-10-04 17:46:44 +00:00
package.json chore: drop form-data (#57141) 2023-10-20 19:25:42 +00:00
plopfile.js Opt-in to dynamic rendering when reading searchParams (#46205) 2023-03-16 21:46:35 +01:00
pnpm-lock.yaml chore: move layer from chunking context to asset context (#57149) 2023-10-21 02:05:00 +02:00
pnpm-workspace.yaml Remove next-dev and its test suite and benchmarks (#55983) 2023-09-26 05:22:39 +02:00
readme.md Monorepo (#5341) 2018-10-01 01:02:10 +02:00
release.js Fix labels for release sections 2021-11-21 13:11:54 +01:00
run-tests.js chore: reduce fs-extra usage in scripts/ (#56917) 2023-10-17 19:31:19 +00:00
rust-toolchain Update rust-toolchain to nightly-2023-10-06 (#56541) 2023-10-07 09:05:44 +00:00
socket.yaml chore(ci): add socket.yaml (#54446) 2023-08-23 18:12:51 +00:00
test-file.txt Add additional file serving tests (#12479) 2020-05-04 11:58:19 -05:00
tsconfig-tsec.json Integrate tsec into the linting process (#33746) 2022-02-24 16:59:18 -08:00
tsconfig.json chore: upgrade jest (#56909) 2023-10-19 17:38:24 +00:00
tsec-exemptions.json Move core files to src folder and move JS files to TypeScript (#44405) 2023-01-03 10:05:50 +01:00
turbo.json Implement granular rust caching (#54582) 2023-08-26 18:54:14 -07:00
UPGRADING.md (Fix)Broken upgrading.mdx link (#54234) 2023-08-18 17:10:38 +00:00
vercel.json Silence GH Comments for Preview URLs (#18766) 2020-11-03 21:59:47 +00:00

Next.js

Getting Started

Visit https://nextjs.org/learn to get started with Next.js.

Documentation

Visit https://nextjs.org/docs to view the full documentation.

Who is using Next.js?

Next.js is used by the world's leading companies. Check out the Next.js Showcase to learn more.

Community

The Next.js community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects.

To chat with other community members you can join the Next.js Discord.

Our Code of Conduct applies to all Next.js community channels.

Contributing

Please see our contributing.md.

Good First Issues

We have a list of good first issues that contain bugs that have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.

Authors

Security

If you believe you have found a security vulnerability in Next.js, we encourage you to responsibly disclose this and not open a public issue. We will investigate all legitimate reports. Email security@vercel.com to disclose any security vulnerabilities.

https://vercel.com/security