From 4cdbd2cb32a4a00a56d90cc86a05db6e677a208d Mon Sep 17 00:00:00 2001 From: Mike Hartington Date: Thu, 13 Feb 2025 12:01:12 -0500 Subject: [PATCH] docs(misc): add canonical urls to website (#30025) --- nx-dev/nx-dev/app/blog/[slug]/page.tsx | 3 +++ nx-dev/nx-dev/app/blog/page.tsx | 3 +++ nx-dev/nx-dev/app/brands/page.tsx | 3 +++ nx-dev/nx-dev/app/careers/page.tsx | 27 ++++++++++++++++++++++++++ nx-dev/nx-dev/app/courses/page.tsx | 3 +++ nx-dev/nx-dev/app/nx-cloud/page.tsx | 3 +++ nx-dev/nx-dev/app/podcast/page.tsx | 3 +++ nx-dev/nx-dev/app/powerpack/page.tsx | 3 +++ nx-dev/nx-dev/app/pricing/page.tsx | 3 +++ nx-dev/nx-dev/app/resources/page.tsx | 3 +++ nx-dev/nx-dev/app/webinar/page.tsx | 3 +++ nx-dev/nx-dev/pages/_app.tsx | 1 + 12 files changed, 58 insertions(+) diff --git a/nx-dev/nx-dev/app/blog/[slug]/page.tsx b/nx-dev/nx-dev/app/blog/[slug]/page.tsx index 12bb800ae9..cc6cad1192 100644 --- a/nx-dev/nx-dev/app/blog/[slug]/page.tsx +++ b/nx-dev/nx-dev/app/blog/[slug]/page.tsx @@ -18,6 +18,9 @@ export async function generateMetadata( return { title: `${post.title} | Nx Blog`, description: post.description, + alternates: { + canonical: `https://nx.dev/blog/${slug}`, + }, openGraph: { url: `https://nx.dev/blog/${slug}`, title: post.title, diff --git a/nx-dev/nx-dev/app/blog/page.tsx b/nx-dev/nx-dev/app/blog/page.tsx index 23456f5044..79b88e426c 100644 --- a/nx-dev/nx-dev/app/blog/page.tsx +++ b/nx-dev/nx-dev/app/blog/page.tsx @@ -11,6 +11,9 @@ import { export const metadata: Metadata = { title: 'Nx Blog - Updates from the Nx & Nx Cloud team', description: 'Latest news from the Nx & Nx Cloud core team', + alternates: { + canonical: 'https://nx.dev/blog', + }, openGraph: { url: 'https://nx.dev/blog', title: 'Nx Blog - Updates from the Nx & Nx Cloud team', diff --git a/nx-dev/nx-dev/app/brands/page.tsx b/nx-dev/nx-dev/app/brands/page.tsx index c3aab7107a..c7c5534893 100644 --- a/nx-dev/nx-dev/app/brands/page.tsx +++ b/nx-dev/nx-dev/app/brands/page.tsx @@ -10,6 +10,9 @@ import type { Metadata } from 'next'; export const metadata: Metadata = { title: 'Brands & Guidelines', + alternates: { + canonical: 'https://nx.dev/brands', + }, description: 'We’ve created the following guidelines for 3rd party use of our logos, content, and trademarks.', openGraph: { diff --git a/nx-dev/nx-dev/app/careers/page.tsx b/nx-dev/nx-dev/app/careers/page.tsx index 4d7d269a05..8487aaca58 100644 --- a/nx-dev/nx-dev/app/careers/page.tsx +++ b/nx-dev/nx-dev/app/careers/page.tsx @@ -7,11 +7,38 @@ import { import { DefaultLayout } from '@nx/nx-dev/ui-common'; import { fetchJobsList } from '@nx/nx-dev/data-access-careers/node-only'; +import { Metadata } from 'next'; async function getData() { return await fetchJobsList(); } +export const metadata: Metadata = { + title: 'Nx: Careers', + alternates: { + canonical: 'https://nx.dev/careers', + }, + description: + 'Make a difference. We build tools helping companies scale and modernize their development practices.', + openGraph: { + url: 'https://nx.dev/careers', + title: 'Nx: Careers', + description: + 'Make a difference. We build tools helping companies scale and modernize their development practices.', + images: [ + { + url: 'https://nx.dev/socials/nx-media.png', + width: 800, + height: 421, + alt: 'Nx: Smart Monorepos · Fast CI', + type: 'image/jpeg', + }, + ], + siteName: 'Nx', + type: 'website', + }, +}; + export default async function CareersPage() { const jobs = await getData(); return ( diff --git a/nx-dev/nx-dev/app/courses/page.tsx b/nx-dev/nx-dev/app/courses/page.tsx index 359c401117..879cc5fefd 100644 --- a/nx-dev/nx-dev/app/courses/page.tsx +++ b/nx-dev/nx-dev/app/courses/page.tsx @@ -8,6 +8,9 @@ export const metadata: Metadata = { title: 'Nx Video Courses', description: 'Master Nx with expert-led video courses from the core team. Boost your skills and productivity.', + alternates: { + canonical: 'https://nx.dev/courses', + }, openGraph: { url: 'https://nx.dev/courses', title: 'Nx Video Courses', diff --git a/nx-dev/nx-dev/app/nx-cloud/page.tsx b/nx-dev/nx-dev/app/nx-cloud/page.tsx index 09ae3684c7..612097f9c6 100644 --- a/nx-dev/nx-dev/app/nx-cloud/page.tsx +++ b/nx-dev/nx-dev/app/nx-cloud/page.tsx @@ -20,6 +20,9 @@ export const metadata: Metadata = { title: 'Nx Cloud', description: 'Nx Cloud is the end-to-end solution for smart, efficient and maintainable CI.', + alternates: { + canonical: 'https://nx.dev/nx-cloud', + }, openGraph: { url: 'https://nx.dev/nx-cloud', title: 'Nx Cloud', diff --git a/nx-dev/nx-dev/app/podcast/page.tsx b/nx-dev/nx-dev/app/podcast/page.tsx index f497fa834a..c599b019ff 100644 --- a/nx-dev/nx-dev/app/podcast/page.tsx +++ b/nx-dev/nx-dev/app/podcast/page.tsx @@ -6,6 +6,9 @@ import { Hero, PodcastList } from '@nx/nx-dev/ui-podcast'; export const metadata: Metadata = { title: 'Nx Podcast - Updates from the Nx & Nx Cloud team', description: 'Latest podcasts from the Nx & Nx Cloud core team', + alternates: { + canonical: 'https://nx.dev/podcast', + }, openGraph: { url: 'https://nx.dev/podcast', title: 'Nx Podcast - Updates from the Nx & Nx Cloud team', diff --git a/nx-dev/nx-dev/app/powerpack/page.tsx b/nx-dev/nx-dev/app/powerpack/page.tsx index 4f811d207d..c426c862ca 100644 --- a/nx-dev/nx-dev/app/powerpack/page.tsx +++ b/nx-dev/nx-dev/app/powerpack/page.tsx @@ -14,6 +14,9 @@ export const metadata: Metadata = { title: 'Nx Powerpack', description: 'Nx Powerpack is a suite of paid extensions for the Nx CLI specifically designed for enterprises.', + alternates: { + canonical: 'https://nx.dev/powerpack', + }, openGraph: { url: 'https://nx.dev/powerpack', title: 'Nx Powerpack', diff --git a/nx-dev/nx-dev/app/pricing/page.tsx b/nx-dev/nx-dev/app/pricing/page.tsx index e11669fd04..1679172aec 100644 --- a/nx-dev/nx-dev/app/pricing/page.tsx +++ b/nx-dev/nx-dev/app/pricing/page.tsx @@ -18,6 +18,9 @@ export const metadata: Metadata = { title: 'Nx Cloud - Available Plans', description: "Distribute everything, don't waste time waiting on CI. Use Nx Cloud's distributed task execution and caching features to release faster. Save time and money.", + alternates: { + canonical: 'https://nx.dev/pricing', + }, openGraph: { url: 'https://nx.dev/pricing', title: 'Nx Cloud - Available Plans', diff --git a/nx-dev/nx-dev/app/resources/page.tsx b/nx-dev/nx-dev/app/resources/page.tsx index 945c254a60..5815de0d37 100644 --- a/nx-dev/nx-dev/app/resources/page.tsx +++ b/nx-dev/nx-dev/app/resources/page.tsx @@ -98,6 +98,9 @@ export const metadata: Metadata = { title: 'Resources', description: 'Explore Nx resources including tutorials, code examples, podcasts, and more.', + alternates: { + canonical: 'https://nx.dev/resources', + }, openGraph: { url: 'https://nx.dev/resources', title: 'Nx Resources', diff --git a/nx-dev/nx-dev/app/webinar/page.tsx b/nx-dev/nx-dev/app/webinar/page.tsx index b301cee941..695b095d0f 100644 --- a/nx-dev/nx-dev/app/webinar/page.tsx +++ b/nx-dev/nx-dev/app/webinar/page.tsx @@ -6,6 +6,9 @@ import { Hero, WebinarList } from '@nx/nx-dev/ui-webinar'; export const metadata: Metadata = { title: 'Nx Webinar - Updates from the Nx & Nx Cloud team', description: 'Latest webinars from the Nx & Nx Cloud core team', + alternates: { + canonical: 'https://nx.dev/webinar', + }, openGraph: { url: 'https://nx.dev/webinar', title: 'Nx Webinar - Updates from the Nx & Nx Cloud team', diff --git a/nx-dev/nx-dev/pages/_app.tsx b/nx-dev/nx-dev/pages/_app.tsx index 5d3adc4c88..524e6822d9 100644 --- a/nx-dev/nx-dev/pages/_app.tsx +++ b/nx-dev/nx-dev/pages/_app.tsx @@ -75,6 +75,7 @@ export default function CustomApp({ dangerouslySetAllPagesToNoIndex={ process.env.NEXT_PUBLIC_NO_INDEX === 'true' } + canonical={'https://nx.dev' + router.asPath.split('?')[0]} />