zlooks.cn
v0.0.38
Published
Hile Http Next Example
Readme
Hile + Next.js
基于 Hile 与 Next.js 的全栈项目。API 路由(/- 前缀)与页面路由共享同一端口。
快速开始
pnpm install
pnpm run dev浏览器打开 http://localhost:3000。示例 API:curl http://localhost:3000/-/post。
全局 CLI zlooks(可选)
安装本包后可用 zlooks 命令;生产构建的 Next 产物固定在 ~/.zlooks/.next(由 zlooks compile 写入;与仓库内可选的 pnpm run build:next 写入包根 .next 不同)。
推荐顺序:
zlooks setup— 初始化~/.zlooks:写入.env,并创建或补齐package.json(name: zlooks-workspace、dependencies/devDependencies与根级zlooks插件清单占位,供后续zlooks plugins与next.config读取)zlooks compile— 在包安装根执行next build,产物写入~/.zlooks/.nextzlooks start— 启动服务(若缺少~/.zlooks/.next/BUILD_ID会提示先执行compile)
插件(实现后):zlooks plugins install <registry 包名> → dependencies;zlooks plugins install <本地文件夹路径> --dev → 仅开发嵌入,devDependencies(file:),包名以该目录 package.json#name 为准。见 docs/superpowers/specs/2026-04-22-zlooks-plugins-protocol-design.md §5.1。
发布到 npm
package.json的files: tarball 含dist、src、public/**/*(显式排除public/uploads/**,用户上传不落 npm 包)、Next/TS 根配置与README.md;不包含next-env.d.ts(由本机next dev/next build/zlooks compile自动生成)、不包含 根目录.next(安装后由zlooks compile写入~/.zlooks/.next)。prepublishOnly:发布前自动执行pnpm run build:base(生成dist/,含 CLI 与 Hile 侧编译产物)。- 发布前自检(推荐):在仓库根执行
pnpm run release:verify(tsc+build:base+build:next,确认整站可构建)。 - 打包预览:
npm pack --dry-run查看将打进包的文件列表(pnpm 的pack无--dry-run时可用此命令)。
常用命令
| 命令 | 说明 |
|------|------|
| pnpm run dev | 构建 Next.js 并以开发模式启动 Hile 服务 |
| pnpm run build | 仅编译 Hile 侧(tsc → dist/,含 zlooks CLI);不包含 Next 生产构建 |
| pnpm run build:next | 可选:在包根生成 .next(本地/CI 验证 Next 能否通过 next build) |
| pnpm run release:verify | 发布前自检:tsc + build:base + build:next(整站可构建) |
| pnpm run start | 生产模式启动:若走全局 zlooks start,需先 zlooks compile;若坚持仓库内 pnpm run start 且读包根 .next,需先 pnpm run build:next |
项目结构
src/
├── app/ # Next.js App Router(禁止 loadService / defineModel)
├── controllers/ # *.controller.ts → 默认 GET /-/…(可 loadService / loadModel)
├── models/ # <领域>/*.model.ts:单文件 export default defineModel
└── services/ # *.boot.ts | *.service.ts(*.boot 由 CLI 自启动)src/services/index.boot.ts:HttpNext与cwd(见packages/http-next/SKILL.md)。src/models/<领域>/*.model.ts:领域数据;src/app/page.tsx示范loadModel+export const dynamic = "force-dynamic"(凡page.tsx使用loadModel时强制)。src/controllers/post.controller.ts:示范loadModel(postModel, …)。
loadService 仅可在 src/services、src/models、src/controllers 中使用,禁止在 src/app。
详见 packages/http-next/SKILL.md 与 Hile 文档。
