Skip to content

hohu init ​

安装项目标记中声明的组件依赖,并执行存在的组件初始化脚本。标准 Backend 会准备环境文件、迁移数据库并同步基础数据。

前提条件 ​

完成 hohu create,所选目录均存在。在包含 .hohu/project.json 的项目根目录或子目录运行。按开发环境教程准备运行环境、PostgreSQL 和 Redis,核对目标数据库及连接配置。

首次环境文件与连接配置的处理步骤见教程。初始化可能连接数据库并修改其结构和基础数据。

所选组件需包含有效的 uv.lock 或 pnpm-lock.yaml。缺失时先用对应包管理器生成并审查,CLI 不自动解析最新版本。

用法 ​

bash
hohu init
hohu init -s mirror
hohu init --source official

没有组件筛选参数。按项目标记中的顺序执行,缺失的组件目录会跳过。

依赖来源 ​

--source 与 -s 等价,默认 auto,只影响当前初始化命令:

值行为
auto保留已有源配置;公共官方包源下载超时、连接失败等传输错误时,尝试中国大陆镜像一次
official仅使用官方公共包源,不自动回退
mirror直接使用中国大陆公共镜像,不自动回退
依赖官方包源中国大陆镜像
PythonPyPIhttps://pypi.tuna.tsinghua.edu.cn/simple
Web / Apphttps://registry.npmjs.org/https://registry.npmmirror.com/

上述镜像为中国大陆访问官方包源困难的场景提供备选。请根据实际网络连通性选择;auto 根据下载失败情况回退,不检测用户所在地区。若只使用官方包源且不希望自动回退,可运行 hohu init -s official。

Python 已配置的自定义源,以及非公共 npm 默认源保持原样,使用 auto 安装且不自动覆盖。显式 official/mirror 与这些配置冲突时会提示处理配置。npm 的 scoped registry 和认证仍由 pnpm 保留。项目已配置 npmmirror 时直接使用它,不重复切换;整个过程不修改全局源配置。

包管理器自身重试结束后才判断是否回退。认证、证书、依赖冲突、构建、哈希或锁文件错误不会触发换源;镜像仍失败则停止。解释器下载、Git/固定 URL 依赖和构建脚本自行下载的文件不由公共包镜像替换,锁文件中的固定 tarball 地址也不会重写。

创建时的 hohu create -s gitee 只选择源码仓库,不决定依赖源;部署的 hohu deploy -s acr 只选择容器镜像。三者的配置分别生效,见配置与排错。

执行过程与结果 ​

组件首选依赖安装初始化
Backenduv sync --locked使用组件 .venv 解释器执行存在的 scripts/init.py
Webpnpm install --frozen-lockfile无额外 CLI 初始化脚本
Apppnpm install --frozen-lockfile无额外 CLI 初始化脚本

Python 镜像安装通过 uv export --locked 导出锁定版本与哈希,再用 uv pip sync 显式安装到组件 .venv,保留原 uv.lock 和 editable 项目安装。这里使用的是 uv,不调用系统 pip。Web/App 始终使用 pnpm,不回退到 npm;pnpm-lock.yaml 保持冻结。

标准后端初始化会:

  1. 从 .env.example 创建缺失的 .env,生成应用密钥。
  2. 在未提供 HOHU_ADMIN_PASSWORD 时生成首次管理员密码。
  3. 执行 alembic upgrade head,然后运行基础数据初始化。

已有 .env 会保留;基础数据同步保留已有管理员密码和用户自定义内容。凭据位于后端 .env,详见首次登录。初始化不启动开发服务或准备 Docker 部署配置。

完成后检查各组件安装输出、后端迁移和初始化结果,再运行 hohu dev,通过登录确认服务可用。无需重复运行内部初始化脚本。

失败后重试 ​

修复错误后,在同一项目重新运行 hohu init。

安装命令、包管理器输出和换源提示会显示在终端,脱敏日志保存到各组件 .local/reports/install-*.log。日志位置也会在安装完成或失败时显示。

现象处理方式
找不到项目进入包含 .hohu/project.json 的目录
数据库或 Redis 连接失败检查服务、数据库和 hohu-admin/.env,修正后重试
依赖安装失败阅读出错组件输出,核对运行环境、网络和锁文件
公共包源下载超时默认自动回退一次;也可使用 hohu init -s mirror,镜像失败后核对日志
自定义源与参数冲突使用 hohu init -s auto 保留配置,或自行调整包管理器源设置
缺少或过期的锁文件用项目包管理器生成或更新并审查锁文件,不能靠换源解决
目录或初始化脚本缺失检查源码完整性;目录可能被跳过,缺失脚本可能仅产生警告
Windows symlink 权限错误开启 Windows 开发者模式,检查目录写入权限

最后一行提示不能代替对每个组件的核查。迁移失败后按实际错误恢复,不要通过删除数据库来重试。