vinext.

项目状态

进展与缺口

vinext 目前已经能够支撑相当一部分规模的 Next.js 应用,但它还不是每个应用或生产负载的即插即用替代品。 请预期会出现兼容性缺口(尤其是较新的 App Router 特性),并在采用前结合你自己的应用进行评估。

01

目前可用的功能

双路由器

/01

App Router 与 Pages Router 的开发与生产构建

App RouterPages Router

服务端能力

/02

React Server Components、Server Actions、路由处理器与中间件

RSCActions中间件

输出形态

/03

静态生成、ISR、output: "export",以及 standalone Node.js 输出

ISR导出Standalone

核心 API

/04

核心 Next.js API 与模块,包括 next/link、next/image、next/navigation、next/headers、next/cache,以及 Metadata API

next/*Metadata

Cloudflare Workers

/05

Cloudflare Workers 部署,支持 bindings、缓存适配器与图片优化

WorkersBindingsKV

迁移工具

/06

迁移工具,通过 vinext check、vinext init,以及 vinext 的 Agent Skill

checkinitSkill
02

正在解决的已知缺口

这些是当前活跃的兼容性工作方向,并非永久性的排除项。

Cache Components 与 Partial Prerendering

影响 · 高

"use cache" 已实现部分功能,但完整的 cacheComponents 行为仍不完整。缓存配置文件、标签、局部外壳(partial shells)、恢复行为、预取,以及一些开发/构建阶段的缓存语义,尚未在所有情况下与 Next.js 一致。

构建期图片与字体优化

影响 · 中

图片可以在 Cloudflare 上按请求实时优化,但 vinext 尚未复刻 Next.js 完整的构建期图片处理流水线。Google Fonts 从 CDN 加载,本地字体 CSS 在运行时注入,而非在构建时提取。

App Router 开发环境下的原生模块

影响 · 中

sharp、resvg、satori、lightningcss、@napi-rs/canvas 等包在 Vite 的 RSC 开发环境中可能会失败。生产构建对这些情况的支持比开发模式更完整。

平台特定与高级 Next.js 行为

影响 · 低

preferredRegion 路由配置会被忽略;runtime 不会决定路由在哪里运行(在 cacheComponents 之外,runtime = "edge" 的 App Router 页面永远不会被 ISR 缓存,这与 Next.js 一致);部分近期引入或未文档化的 Next.js 行为可能尚未复刻。

03

不支持的内容(且以后也不会支持)

这些是有意为之的排除项。对于目前缺失但已在路线图上的内容,见上方的正在解决的已知缺口。

Vercel 特定特性

/01

@vercel/og 边缘运行时、Vercel Analytics 集成、Vercel KV/Blob/Postgres bindings。请使用平台等价物。

AMP

/02

自 Next.js 13 起已废弃。useAmp() 返回 false。

next export(旧版)

/03

请改用配置中的 output: 'export'。

Turbopack/webpack 配置

/04

这套东西跑在 Vite 上。请使用 Vite 插件,而非 webpack loader/插件。

next/jest

/05

请使用 Vitest。

create-next-app 脚手架

/06

新 vinext 项目请使用 create-vinext-app。

与未文档化行为的逐 bug 对齐

/07

如果它不在 Next.js 文档里,我们大概率不会复刻它。