next.config.ts
import type { NextConfig } from "next";
import createNextIntlPlugin from "next-intl/plugin";
import createMDX from "@next/mdx";
import remarkGfm from "remark-gfm";
import rehypeHighlight from "rehype-highlight";
import rehypeSlug from "rehype-slug";
import rehypeAutolinkHeadings from "rehype-autolink-headings";
const withNextIntl = createNextIntlPlugin("./i18n.ts");
const nextConfig: NextConfig = {
reactCompiler: true,
experimental: {
viewTransition: true,
optimizePackageImports: ["lucide-react", "date-fns"],
},
typescript: {
// Optionally ignore TypeScript errors during builds
ignoreBuildErrors: false,
},
images: {
remotePatterns: [
{
protocol: "https",
hostname:
process.env.NEXT_PUBLIC_CONVEX_URL?.replace("https://", "").replace(
"http://",
"",
) ?? "ceaseless-trout-193.convex.cloud",
port: "",
pathname: "/api/storage/**",
},
],
},
pageExtensions: ["js", "jsx", "md", "mdx", "ts", "tsx"],
};
const withMDX = createMDX({
options: {
remarkPlugins: [remarkGfm],
rehypePlugins: [
rehypeHighlight,
rehypeSlug,
[rehypeAutolinkHeadings, { behavior: "wrap" }],
],
},
});
export default withNextIntl(withMDX(nextConfig));