(defaultVersionTag);
const [copied, setCopied] = useState(false);
- const managedInstallCommand = useMemo(
- () => buildInstallCommand(selectedTag),
- [selectedTag],
- );
- const managedCommands = useMemo(
- () => buildQuickStartCommands(managedInstallCommand),
- [managedInstallCommand],
- );
+ const managedInstallCommand = useMemo(() => buildInstallCommand(selectedTag), [selectedTag]);
+ const managedCommands = useMemo(() => buildQuickStartCommands(managedInstallCommand), [managedInstallCommand]);
const managedCopyCommand = useMemo(() => managedCommands.join('\n'), [managedCommands]);
const selectedVersion = selectedTag === 'beta' ? beta : latest;
const useManagedCommands = showVersionSwitch;
- const installCommand = useManagedCommands
- ? managedInstallCommand
- : (installCommandProp ?? managedInstallCommand);
+ const installCommand = useManagedCommands ? managedInstallCommand : (installCommandProp ?? managedInstallCommand);
const lines = useManagedCommands
? managedCommands
: commandsProp && commandsProp.length > 0
? commandsProp
: managedCommands;
- const copyCommand = useManagedCommands
- ? managedCopyCommand
- : (copyCommandProp ?? managedCopyCommand);
+ const copyCommand = useManagedCommands ? managedCopyCommand : (copyCommandProp ?? managedCopyCommand);
- const { history, activeInput, isTyping, animate: isAnimating } = useCliTypewriter({
+ const {
+ history,
+ activeInput,
+ isTyping,
+ animate: isAnimating,
+ } = useCliTypewriter({
enabled: animate,
locale,
commands: lines,
@@ -283,7 +266,7 @@ export default function CliCommandBlock({
{showVersionSwitch && (
@@ -307,7 +290,7 @@ export default function CliCommandBlock({
className={clsx(
styles.versionOption,
styles.toolbarMono,
- isActive && styles.versionOptionActive,
+ isActive && styles.versionOptionActive
)}
disabled={versionsLoading}
aria-pressed={isActive}
@@ -364,7 +347,7 @@ export default function CliCommandBlock({
line.kind === 'success' && styles.successRow,
line.kind === 'divider' && styles.dividerRow,
inReadyBlock && styles.readyBlock,
- line.kind === 'success' && index === readyIndex + 1 && styles.readyHeadline,
+ line.kind === 'success' && index === readyIndex + 1 && styles.readyHeadline
)}
>
{line.kind === 'input' ? (
@@ -408,7 +391,9 @@ export default function CliCommandBlock({
{showHint ? (
Copy all commands and paste into your terminal to get started
) : (
-
+
)}
)}
diff --git a/docs/src/constants/quickStartCommands.ts b/docs/src/constants/quickStartCommands.ts
index 13d9d1e3..b9ea7bab 100644
--- a/docs/src/constants/quickStartCommands.ts
+++ b/docs/src/constants/quickStartCommands.ts
@@ -1,10 +1,7 @@
-import {
- buildInstallCommand,
- FALLBACK_REACTPRESS_VERSIONS,
-} from '@site/src/npm/packageVersions';
+import { buildInstallCommand, FALLBACK_REACTPRESS_VERSIONS } from '@site/src/npm/packageVersions';
/** ReactPress quick-start commands (homepage CLI demo). */
-export const QUICK_START_INSTALL_COMMAND = buildInstallCommand('beta');
+export const QUICK_START_INSTALL_COMMAND = buildInstallCommand('latest');
export const QUICK_START_COMMANDS = [
QUICK_START_INSTALL_COMMAND,
@@ -38,11 +35,11 @@ const QUICK_START_DEV_READY_LINES_ZH: DevReadyLines = [
'API http://localhost:3002/api',
];
-/** @deprecated Use getQuickStartDemoOutputs(locale, installCommand, betaVersion) */
+/** @deprecated Use getQuickStartDemoOutputs(locale, installCommand, version) */
export const QUICK_START_DEMO_OUTPUTS = getQuickStartDemoOutputs(
'en',
QUICK_START_INSTALL_COMMAND,
- FALLBACK_REACTPRESS_VERSIONS.beta,
+ FALLBACK_REACTPRESS_VERSIONS.latest
);
/** @deprecated Use getQuickStartDevReadyLines(locale) */
@@ -56,11 +53,7 @@ export function getInstallDemoOutput(_betaVersion: string): readonly string[] {
return ['added 1 package in 12s'];
}
-export function getQuickStartDemoOutputs(
- locale: string,
- installCommand: string,
- betaVersion: string,
-): DemoOutputs {
+export function getQuickStartDemoOutputs(locale: string, installCommand: string, betaVersion: string): DemoOutputs {
const installDemoOutput = getInstallDemoOutput(betaVersion);
const shared: DemoOutputs = {
[installCommand]: installDemoOutput,
diff --git a/docs/src/npm/packageVersions.ts b/docs/src/npm/packageVersions.ts
index 390fff60..59db4648 100644
--- a/docs/src/npm/packageVersions.ts
+++ b/docs/src/npm/packageVersions.ts
@@ -1,24 +1,22 @@
export const REACTPRESS_NPM_PACKAGE = '@fecommunity/reactpress';
-export const REACTPRESS_NPM_REGISTRY_URL =
- 'https://registry.npmjs.org/@fecommunity%2Freactpress';
+export const REACTPRESS_NPM_REGISTRY_URL = 'https://registry.npmjs.org/@fecommunity%2Freactpress';
-export const REACTPRESS_NPM_PAGE_URL =
- 'https://www.npmjs.com/package/@fecommunity/reactpress';
+export const REACTPRESS_NPM_PAGE_URL = 'https://www.npmjs.com/package/@fecommunity/reactpress';
-/** npm.com version page, e.g. …/v/4.0.0-beta.18 */
+/** npm.com version page, e.g. …/v/4.0.0 */
export function buildNpmVersionPageUrl(version: string): string {
return `${REACTPRESS_NPM_PAGE_URL}/v/${encodeURIComponent(version)}`;
}
-/** GitHub release tag page, e.g. …/releases/tag/v4.0.0-beta.18 */
+/** GitHub release tag page, e.g. …/releases/tag/v4.0.0 */
export function buildGitHubReleaseTagUrl(version: string): string {
return `https://github.com/fecommunity/reactpress/releases/tag/v${encodeURIComponent(version)}`;
}
/** Fallback when the registry is unreachable (SSR / offline). */
export const FALLBACK_REACTPRESS_VERSIONS = {
- latest: '3.7.0',
+ latest: '4.0.0',
beta: '4.0.0-beta.18',
} as const;
@@ -46,7 +44,7 @@ export async function fetchReactPressVersions(): Promise {
};
}
-export function buildInstallCommand(tag: 'beta' | 'latest' = 'beta'): string {
+export function buildInstallCommand(tag: 'beta' | 'latest' = 'latest'): string {
return `npm i -g ${REACTPRESS_NPM_PACKAGE}@${tag}`;
}
diff --git a/docs/src/pages/about.md b/docs/src/pages/about.md
index 34565da9..e1fa6a0a 100644
--- a/docs/src/pages/about.md
+++ b/docs/src/pages/about.md
@@ -22,7 +22,7 @@ keywords: [reactpress, about, open source, react cms, publishing platform]
ReactPress 4.0 (codename **Extend**) is the current recommended release. New users install with:
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
```
## Who ReactPress is for
diff --git a/docs/src/seo/structuredData.ts b/docs/src/seo/structuredData.ts
index a39595ed..40ad6511 100644
--- a/docs/src/seo/structuredData.ts
+++ b/docs/src/seo/structuredData.ts
@@ -27,12 +27,11 @@ export const FAQ_ENTRIES_EN: FaqEntry[] = [
{
question: 'Is ReactPress 4.0 production-ready?',
answer:
- '4.0 is in active beta. Core paths init and doctor are stable; validate on staging before upgrading production and read the 3.x to 4.0 migration guide.',
+ '4.0.0 is the current stable release. When upgrading from 3.x, validate on staging and read the 3.x to 4.0 migration guide.',
},
{
question: 'Is ReactPress free?',
- answer:
- 'Yes. ReactPress is open source under the MIT license. Install via npm: npm i -g @fecommunity/reactpress@beta.',
+ answer: 'Yes. ReactPress is open source under the MIT license. Install via npm: npm i -g @fecommunity/reactpress.',
},
];
@@ -64,7 +63,7 @@ export const FAQ_ENTRIES_ZH: FaqEntry[] = [
},
{
question: 'ReactPress 免费吗?',
- answer: '是的。ReactPress 基于 MIT 开源,可通过 npm i -g @fecommunity/reactpress@beta 安装。',
+ answer: '是的。ReactPress 基于 MIT 开源,可通过 npm i -g @fecommunity/reactpress 安装。',
},
];
diff --git a/docs/tutorial/getting-started/build-nextjs-blog-in-60-seconds.md b/docs/tutorial/getting-started/build-nextjs-blog-in-60-seconds.md
index 68883318..a7070b35 100644
--- a/docs/tutorial/getting-started/build-nextjs-blog-in-60-seconds.md
+++ b/docs/tutorial/getting-started/build-nextjs-blog-in-60-seconds.md
@@ -31,7 +31,7 @@ keywords: [next.js 博客, 用 next.js 建博客, next.js cms, reactpress, react
## 第 1 步 — 安装 CLI(约 15 秒)
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
```
包地址:[@fecommunity/reactpress](https://www.npmjs.com/package/@fecommunity/reactpress)。
diff --git a/docs/tutorial/getting-started/first-site.md b/docs/tutorial/getting-started/first-site.md
index b7aacaa9..781efea9 100644
--- a/docs/tutorial/getting-started/first-site.md
+++ b/docs/tutorial/getting-started/first-site.md
@@ -12,7 +12,7 @@ keywords: [reactpress, quick start, 快速开始, 第一篇博客, init, tutoria
## 第 1 步:安装 CLI
```bash
-npm install -g @fecommunity/reactpress@beta
+npm install -g @fecommunity/reactpress
```
## 第 2 步:初始化站点
diff --git a/docs/tutorial/getting-started/installation.md b/docs/tutorial/getting-started/installation.md
index 3b8413bf..f32f6d6c 100644
--- a/docs/tutorial/getting-started/installation.md
+++ b/docs/tutorial/getting-started/installation.md
@@ -30,10 +30,10 @@ node -v # 应显示 v20.x 或更高
## 安装 CLI(推荐)
```bash
-npm install -g @fecommunity/reactpress@beta
+npm install -g @fecommunity/reactpress
```
-> npm **`@beta`** 标签为 4.x 预发布;`@latest` 仍为 3.x。不存在 `@4` dist-tag。
+> 4.0 稳定版在 npm **`@latest`**。预发布使用 `@beta`。不存在 `@4` dist-tag。
首次 `npm install -g` 会触发 `postinstall`,下载 bundled server 运行时依赖,约需 1–2 分钟。
diff --git a/docs/tutorial/getting-started/reactpress-vs-wordpress.md b/docs/tutorial/getting-started/reactpress-vs-wordpress.md
index 6100dca2..c59eff85 100644
--- a/docs/tutorial/getting-started/reactpress-vs-wordpress.md
+++ b/docs/tutorial/getting-started/reactpress-vs-wordpress.md
@@ -20,7 +20,7 @@ keywords:
| ------------ | ------------------------------------------------------------------------------- | -------------------------------------------- |
| **定位** | **面向 React 开发者的完整发布系统**(Admin + API + Next.js 主题 + 插件 + 桌面) | 全球最流行的 PHP CMS,插件与主题生态极其成熟 |
| **技术栈** | React、Next.js、NestJS、SQLite / MySQL | PHP、MySQL、传统主题 |
-| **上手** | `npm i -g @fecommunity/reactpress@beta` → `reactpress init` — 约 **60 秒** | 托管一键安装或 LAMP,通常分钟级 |
+| **上手** | `npm i -g @fecommunity/reactpress` → `reactpress init` — 约 **60 秒** | 托管一键安装或 LAMP,通常分钟级 |
| **编辑** | Markdown 优先的 Admin;熟悉的文章/页面/媒体模型 | Gutenberg 块编辑;编辑器生态庞大 |
| **访客交付** | 默认 Next.js SSR / ISR | PHP 主题;常依赖缓存插件 |
| **Headless** | 一等公民 REST + TypeScript toolkit | 有 REST;Headless 常需额外配置 |
@@ -143,7 +143,7 @@ ReactPress SEO 工作流:[站点设置与 SEO](../user-guide/site-settings-seo
## 快速试用
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-blog && cd my-blog
reactpress init
```
@@ -164,7 +164,7 @@ reactpress init
是 — MIT,npm 安装即可。
**4.0 能上生产吗?**
-active beta,核心路径稳定。请阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md) 并在预发验证。
+4.0.0 稳定版。从 3.x 升级请阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md) 并在预发验证。
**能用自己的前端吗?**
可以 — Headless REST + API Key。
diff --git a/docs/tutorial/getting-started/self-hosted-cms-for-react.md b/docs/tutorial/getting-started/self-hosted-cms-for-react.md
index 2c6e8e29..a8b07d36 100644
--- a/docs/tutorial/getting-started/self-hosted-cms-for-react.md
+++ b/docs/tutorial/getting-started/self-hosted-cms-for-react.md
@@ -14,7 +14,7 @@ keywords: [自托管 cms, 自托管 react cms, react cms, 开源 cms, next.js cm
**ReactPress** 是面向 React 开发者的开源 **自托管发布平台**:Admin + NestJS API + Next.js 主题 + 插件 + 可选桌面客户端,一条 CLI 启动。内容与媒体留在 **你自己的** 机器或服务器上。
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-cms && cd my-cms
reactpress init
```
@@ -129,7 +129,7 @@ flowchart TB
可以 — 经 API 导出、迁移数据库文件,或让新主题指向同一 API。
**4.0 适合自托管生产吗?**
-核心 `init` / `doctor` 在 active beta 中已较稳定;请先预发,并阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md)。更多见 [FAQ](../reference/faq.md)。
+4.0.0 为稳定版;从 3.x 升级请先预发,并阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md)。更多见 [FAQ](../reference/faq.md)。
## 博客延伸阅读
diff --git a/docs/tutorial/getting-started/what-is-reactpress.md b/docs/tutorial/getting-started/what-is-reactpress.md
index 580b8298..035e8c9d 100644
--- a/docs/tutorial/getting-started/what-is-reactpress.md
+++ b/docs/tutorial/getting-started/what-is-reactpress.md
@@ -23,7 +23,7 @@ keywords: [reactpress 是什么, reactpress, react cms, react 发布平台, next
| **CLI** | `init` · `doctor` · `logs` · `stop` — 约 **60 秒**上线 |
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-site && cd my-site
reactpress init
```
@@ -96,13 +96,13 @@ flowchart LR
## 快速问答
-| 问题 | 答案 |
-| ------------------ | -------------------------------------------------------------------------- |
-| 免费吗? | 是 — MIT 开源 |
-| 需要 Docker 吗? | 默认不需要(SQLite);仅 embedded-docker / 外部 MySQL 时需要 |
-| 能上生产吗? | 4.0 为 active beta;请在预发验证 — 见 [FAQ](../reference/faq.md) |
-| 能用自己的前端吗? | 可以 — Headless REST + API Key |
-| 和 WordPress? | 编辑理念相近,交付用 React/Next — [完整对比](./reactpress-vs-wordpress.md) |
+| 问题 | 答案 |
+| ------------------ | -------------------------------------------------------------------------------- |
+| 免费吗? | 是 — MIT 开源 |
+| 需要 Docker 吗? | 默认不需要(SQLite);仅 embedded-docker / 外部 MySQL 时需要 |
+| 能上生产吗? | 4.0.0 为稳定版(`@latest`);从 3.x 升级请先预发 — 见 [FAQ](../reference/faq.md) |
+| 能用自己的前端吗? | 可以 — Headless REST + API Key |
+| 和 WordPress? | 编辑理念相近,交付用 React/Next — [完整对比](./reactpress-vs-wordpress.md) |
## 从这里开始
diff --git a/docs/tutorial/intro.md b/docs/tutorial/intro.md
index 14274816..3154545e 100644
--- a/docs/tutorial/intro.md
+++ b/docs/tutorial/intro.md
@@ -24,7 +24,7 @@ keywords:
**ReactPress** 是 **面向 React 开发者的发布系统** — 用 React 构建博客、文档、企业官网与内容驱动型应用。一条 CLI 即可运行 CMS API、Web 管理后台、可替换的 Next.js 主题、插件扩展与 Electron 桌面客户端。
-**ReactPress 4.0**(代号 **Extend**)在 3.x 之上新增**插件系统**、**桌面客户端**与 **npm 主题 catalog**。新用户推荐 `npm i -g @fecommunity/reactpress@beta`,详见 [ReactPress 4.0 扩展版](./tutorial-extras/reactpress-4-0.md)。桌面端安装见 [桌面客户端](./tutorial-extras/desktop-client.md)。仍使用 3.x 见 [3.0 平台版](./tutorial-extras/reactpress-3-0.md)。
+**ReactPress 4.0**(代号 **Extend**)在 3.x 之上新增**插件系统**、**桌面客户端**与 **npm 主题 catalog**。新用户推荐 `npm i -g @fecommunity/reactpress`,详见 [ReactPress 4.0 扩展版](./tutorial-extras/reactpress-4-0.md)。桌面端安装见 [桌面客户端](./tutorial-extras/desktop-client.md)。仍使用 3.x 见 [3.0 平台版](./tutorial-extras/reactpress-3-0.md)。
## 🆚 框架对比
@@ -75,7 +75,7 @@ keywords:
### 终端用户 — 一个全局包
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-blog && cd my-blog
reactpress init
```
@@ -160,7 +160,7 @@ Email: admin@gaoredu.com
ReactPress 免费吗?
-是,MIT 开源。安装:`npm i -g @fecommunity/reactpress@beta`。
+是,MIT 开源。安装:`npm i -g @fecommunity/reactpress`。
diff --git a/docs/tutorial/reference/faq.md b/docs/tutorial/reference/faq.md
index 5f95fe42..e0ef8801 100644
--- a/docs/tutorial/reference/faq.md
+++ b/docs/tutorial/reference/faq.md
@@ -90,7 +90,7 @@ Monorepo 本地开发时,Admin Vite dev server 可能在 `http://localhost:300
ReactPress 免费吗?
-是,MIT 开源。全局安装:`npm i -g @fecommunity/reactpress@beta`。
+是,MIT 开源。全局安装:`npm i -g @fecommunity/reactpress`。
@@ -99,7 +99,7 @@ Monorepo 本地开发时,Admin Vite dev server 可能在 `http://localhost:300
4.0 可以上生产吗?
-4.0 处于 active beta。建议在升级生产前阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md) 并在 staging 验证。核心路径 `init` / `doctor` 已稳定可用。
+4.0.0 为当前稳定版(npm `@latest`)。从 3.x 升级请阅读 [3.x → 4.0 迁移](../tutorial-extras/migration-3-to-4.md),并先在预发验证。
diff --git a/docs/tutorial/reference/troubleshooting.md b/docs/tutorial/reference/troubleshooting.md
index 1a5f4ea9..e077e18f 100644
--- a/docs/tutorial/reference/troubleshooting.md
+++ b/docs/tutorial/reference/troubleshooting.md
@@ -16,13 +16,13 @@ reactpress logs --tail 100
## 诊断命令速查
-| 命令 | 用途 |
-|------|------|
-| `reactpress doctor` | 环境、端口、DB、进程总览 |
-| `reactpress doctor --show-logs` | 失败时附带日志片段 |
-| `reactpress logs -f` | 实时跟踪 API 日志 |
-| `reactpress logs --grep error` | 过滤错误行 |
-| `reactpress stop` | 停止后干净重启 |
+| 命令 | 用途 |
+| ------------------------------- | ------------------------ |
+| `reactpress doctor` | 环境、端口、DB、进程总览 |
+| `reactpress doctor --show-logs` | 失败时附带日志片段 |
+| `reactpress logs -f` | 实时跟踪 API 日志 |
+| `reactpress logs --grep error` | 过滤错误行 |
+| `reactpress stop` | 停止后干净重启 |
Monorepo:`pnpm status`、`pnpm docker:dev:logs`
@@ -34,7 +34,7 @@ Monorepo:`pnpm status`、`pnpm docker:dev:logs`
```bash
# 重试安装
-npm install -g @fecommunity/reactpress@beta --force
+npm install -g @fecommunity/reactpress --force
# 检查代理与 registry
npm config get registry
@@ -71,11 +71,11 @@ reactpress init
### API 启动但 Admin / 主题无法访问
-| 现象 | 可能原因 | 处理 |
-|------|----------|------|
-| :3000 无法打开 | web 进程未起 | Monorepo:`pnpm dev:web`;检查 logs |
-| :3001 空白 | 主题未启用 | Admin → 外观 → 启用主题 |
-| CORS 错误 | URL 配置不一致 | 核对 `CLIENT_SITE_URL` / `SERVER_SITE_URL` |
+| 现象 | 可能原因 | 处理 |
+| -------------- | -------------- | ------------------------------------------ |
+| :3000 无法打开 | web 进程未起 | Monorepo:`pnpm dev:web`;检查 logs |
+| :3001 空白 | 主题未启用 | Admin → 外观 → 启用主题 |
+| CORS 错误 | URL 配置不一致 | 核对 `CLIENT_SITE_URL` / `SERVER_SITE_URL` |
### 主题进程报错 REACTPRESS_THEME_NOT_FOUND
diff --git a/docs/tutorial/tutorial-basics/deploy-your-site.md b/docs/tutorial/tutorial-basics/deploy-your-site.md
index 55e0f2a8..d8a8dfe9 100644
--- a/docs/tutorial/tutorial-basics/deploy-your-site.md
+++ b/docs/tutorial/tutorial-basics/deploy-your-site.md
@@ -10,7 +10,7 @@ keywords: [reactpress, production, deploy, nginx, start, build]
已在服务器安装 Node ≥ 18 与 Docker(或外部 MySQL)时:
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
cd /path/to/your-site # 含 .reactpress/ 的项目目录
reactpress init # 若尚未初始化
reactpress build # 按需构建
@@ -76,11 +76,11 @@ pm2 restart all # 或 pnpm run pm2
4.0 全局 CLI 默认使用**内置 API + 主题内嵌 Admin**(`reactpress init`)。以下拆分部署能力主要面向 **Monorepo 贡献者**或仍使用 3.x CLI 的站点:
-| 场景 | 说明 |
-|------|------|
-| 全栈(终端用户) | `reactpress init` |
+| 场景 | 说明 |
+| ----------------- | ---------------------------------------------------------------------------------------- |
+| 全栈(终端用户) | `reactpress init` |
| 仅 API / 拆分进程 | Monorepo:`pnpm dev:api` 等,见 [Monorepo 开发](../developer-guide/local-development.md) |
-| 桌面客户端 | `pnpm build:desktop`(本地 SQLite,非服务器部署) |
+| 桌面客户端 | `pnpm build:desktop`(本地 SQLite,非服务器部署) |
`@fecommunity/reactpress-server` 已 deprecated,请勿作为新项目的生产入口。
diff --git a/docs/tutorial/tutorial-basics/start.md b/docs/tutorial/tutorial-basics/start.md
index 3da9cdf1..ae7ef6af 100644
--- a/docs/tutorial/tutorial-basics/start.md
+++ b/docs/tutorial/tutorial-basics/start.md
@@ -9,28 +9,28 @@ keywords: [reactpress, local development, dev, pnpm, monorepo]
ReactPress 4.0 提供三条本地路径,按场景选择。
-| 场景 | 方式 | 前置 |
-|------|------|------|
-| **建站 / 试用(推荐)** | 全局 `reactpress init` | Node ≥ 20 |
-| **离线写作** | 桌面客户端 | 见 [桌面客户端](../tutorial-extras/desktop-client.md) |
-| **贡献 monorepo** | `pnpm dev` | Node ≥ 20、pnpm |
+| 场景 | 方式 | 前置 |
+| ----------------------- | ---------------------- | ----------------------------------------------------- |
+| **建站 / 试用(推荐)** | 全局 `reactpress init` | Node ≥ 20 |
+| **离线写作** | 桌面客户端 | 见 [桌面客户端](../tutorial-extras/desktop-client.md) |
+| **贡献 monorepo** | `pnpm dev` | Node ≥ 20、pnpm |
## 方式一:全局 CLI(推荐)
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-blog && cd my-blog
reactpress init
```
`init` 生成配置、初始化 SQLite 并**自动启动**全栈。
-| 服务 | 端口 | 地址 |
-|------|------|------|
-| 管理后台 | 3001 `/admin/` | http://localhost:3001/admin/ |
-| 访客主题 | 3001 | http://localhost:3001 |
-| API | 3002 | http://localhost:3002/api/health |
-| 主题预览 | 3003 | http://localhost:3003 |
+| 服务 | 端口 | 地址 |
+| -------- | -------------- | -------------------------------- |
+| 管理后台 | 3001 `/admin/` | http://localhost:3001/admin/ |
+| 访客主题 | 3001 | http://localhost:3001 |
+| API | 3002 | http://localhost:3002/api/health |
+| 主题预览 | 3003 | http://localhost:3003 |
### 常用命令
diff --git a/docs/tutorial/tutorial-extras/migration-3-to-4.md b/docs/tutorial/tutorial-extras/migration-3-to-4.md
index 5612e990..0ac3c47e 100644
--- a/docs/tutorial/tutorial-extras/migration-3-to-4.md
+++ b/docs/tutorial/tutorial-extras/migration-3-to-4.md
@@ -14,7 +14,7 @@ ReactPress **4.0** 在 3.x 之上新增插件系统、Electron 桌面客户端
## 升级步骤
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
cd your-site
reactpress doctor
```
diff --git a/docs/tutorial/tutorial-extras/reactpress-4-0.md b/docs/tutorial/tutorial-extras/reactpress-4-0.md
index 2813c1be..a9c28d2e 100644
--- a/docs/tutorial/tutorial-extras/reactpress-4-0.md
+++ b/docs/tutorial/tutorial-extras/reactpress-4-0.md
@@ -20,7 +20,7 @@ keywords: [reactpress 4.0, extend, plugin, desktop, theme catalog, wordpress alt
## 快速开始(全栈,与 3.x 相同)
```bash
-npm i -g @fecommunity/reactpress@beta
+npm i -g @fecommunity/reactpress
mkdir my-blog && cd my-blog
reactpress init
```
diff --git a/package.json b/package.json
index c5ba60e8..2ce98d27 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "reactpress",
- "version": "4.0.0-beta.18",
+ "version": "4.0.0",
"private": true,
"packageManager": "pnpm@9.15.9",
"description": "ReactPress — Publish with React. Ship like WordPress. CMS, Admin, Headless API, Next.js themes, plugins, desktop — one CLI.",
diff --git a/server/package.json b/server/package.json
index 31013dec..5f508c51 100644
--- a/server/package.json
+++ b/server/package.json
@@ -1,6 +1,6 @@
{
"name": "@fecommunity/reactpress-server",
- "version": "4.0.0-beta.18",
+ "version": "4.0.0",
"deprecated": "Bundled in @fecommunity/reactpress CLI from v3.1. Run `npx @fecommunity/reactpress init` for new projects.",
"description": "ReactPress NestJS REST API (deprecated). Bundled in @fecommunity/reactpress CLI from v3.1. Headless CMS for articles, media, plugins, and themes",
"author": "fecommunity",
diff --git a/toolkit/package.json b/toolkit/package.json
index b8b3f446..890fd723 100644
--- a/toolkit/package.json
+++ b/toolkit/package.json
@@ -1,6 +1,6 @@
{
"name": "@fecommunity/reactpress-toolkit",
- "version": "4.0.0-beta.18",
+ "version": "4.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
diff --git a/web/package.json b/web/package.json
index c73e646b..0869815c 100644
--- a/web/package.json
+++ b/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@fecommunity/reactpress-web",
- "version": "4.0.0-beta.20",
+ "version": "4.0.0",
"description": "Official ReactPress Admin — WordPress-style writing UI for the publishing platform. Vite SPA with Express and Next.js /admin/ mount helpers",
"keywords": [
"admin",
diff --git a/web/src/routes/login/-LoginCliSnippet.tsx b/web/src/routes/login/-LoginCliSnippet.tsx
index 0e4323f6..74bbae7a 100644
--- a/web/src/routes/login/-LoginCliSnippet.tsx
+++ b/web/src/routes/login/-LoginCliSnippet.tsx
@@ -15,7 +15,7 @@ import {
import styles from "./login-cli-snippet.module.css";
const QUICK_START_LINES = [
- "npm i -g @fecommunity/reactpress@beta",
+ "npm i -g @fecommunity/reactpress",
"mkdir my-site && cd my-site",
"reactpress init",
] as const;
diff --git a/web/src/routes/login/-loginCyberLogo.ts b/web/src/routes/login/-loginCyberLogo.ts
index 38d2b416..4569d676 100644
--- a/web/src/routes/login/-loginCyberLogo.ts
+++ b/web/src/routes/login/-loginCyberLogo.ts
@@ -19,4 +19,4 @@ export const LOGIN_CYBER_LOGO_GRADIENTS = [
export const LOGIN_CYBER_COMMANDS = ["init", "doctor", "logs", "stop", "deploy"] as const;
-export const REACTPRESS_CLI_VERSION = "4.0.0-beta.0";
+export const REACTPRESS_CLI_VERSION = "4.0.0";