Cli
pnpm 脚本参考
Nebutra-Sailor 中所有 Turborepo 编排 pnpm 脚本的完整参考。
所有脚本均由 Turborepo 编排,除特别说明外,均从 monorepo 根目录运行。
# 从 monorepo 根目录运行任意脚本
pnpm <script>
# 为特定包运行脚本
pnpm --filter @nebutra/ui typecheck
pnpm --filter apps/web dev
| 脚本 | 说明 |
|---|
pnpm dev | 同时启动所有应用 |
pnpm dev:dashboard | Web(3000)+ Admin(3002)+ API 网关(3001) |
pnpm dev:marketing | 落地页(3002 端口)+ Sanity Studio(3333 端口) |
pnpm dev:ai-saas | 全部 6 个 AI SaaS 应用 |
pnpm dev:overseas | 国际化语言应用(4 个应用) |
pnpm dev:growth | 增长类应用(3 个应用) |
pnpm dev:creative | 创意套件应用(2 个应用) |
pnpm dev:blog | 博客应用(2 个应用) |
pnpm dev:community | 社区平台应用(3 个应用) |
pnpm dev:solo | 独立开发者套件(4 个应用) |
pnpm dev:design | 设计工具(2 个应用) |
| 脚本 | 说明 |
|---|
pnpm build | 所有应用的生产构建 |
pnpm build:ai-saas | 构建 AI SaaS 预设(6 个应用) |
pnpm build:marketing | 构建营销预设(3 个应用) |
pnpm build:dashboard | 构建仪表板预设(3 个应用) |
| 脚本 | 说明 |
|---|
pnpm typecheck | TypeScript 类型检查(turbo,全部包) |
pnpm lint | Biome lint(全部包) |
pnpm lint:fix | 自动修复 lint 问题 |
pnpm format | Biome 格式化(全部包) |
| 脚本 | 说明 |
|---|
pnpm test | 运行所有 Vitest 单元测试 |
pnpm test:watch | 监听模式 |
pnpm test:coverage | 含覆盖率报告(80% 阈值) |
pnpm test:arch | 架构合规测试 |
pnpm e2e | Playwright E2E 测试 |
| 脚本 | 说明 |
|---|
pnpm db:generate | 重新生成 Prisma 客户端 |
pnpm db:migrate | 运行待执行迁移 |
pnpm db:push | 直接推送 schema(不生成迁移) |
pnpm db:studio | 启动 Prisma Studio GUI |
| 脚本 | 说明 |
|---|
pnpm infra:up | 启动完整 Docker 服务栈(PG + Redis + ClickHouse + Meilisearch) |
pnpm infra:lite | 启动精简栈(仅 PostgreSQL——最快启动) |
pnpm infra:down | 停止所有服务 |
pnpm check-env | 验证环境变量 |
| 脚本 | 说明 |
|---|
pnpm brand:sync | 跨包同步品牌资产 |
pnpm brand:init | 初始化品牌配置 |
pnpm brand:apply | 将品牌更改应用到所有包 |
pnpm brand:palette | 交互式调色板生成器 |
# 生成自定义调色板
node scripts/generate-palette.mjs --primary=#7C3AED --secondary=#F59E0B
| 脚本 | 说明 |
|---|
pnpm generate:api-types | 从 OpenAPI 规范重新生成 TypeScript 类型 |
pnpm docs:cli | 自动生成 CLI 参考文档 |
| 脚本 | 说明 |
|---|
pnpm preset:env | 通过交互式 CLI 配置当前激活的预设 |
| 脚本 | 说明 |
|---|
pnpm version:packages | 基于 changesets 更新包版本号 |
pnpm release | 发布包到 npm 注册中心 |
# 标准发布流程
pnpm version:packages # 根据 changesets 更新版本号
git push --follow-tags
pnpm release # 发布到 npm
| 脚本 | 说明 |
|---|
pnpm size | 检查包体积是否超出预算 |
pnpm size:why | 详细的包体积组成分析 |
| 脚本 | 说明 |
|---|
pnpm license:check | 审计生产依赖许可证 |
pnpm ui:validate-policy | 验证 UI Token 治理策略 |
pnpm ui:verify-governance | 严格治理验证 |
# 完全重置(全新开始)
pnpm infra:down
pnpm infra:up
pnpm db:migrate
# 提交前检查
pnpm typecheck && pnpm lint && pnpm test
# 拉取代码后
pnpm install
pnpm db:generate
pnpm db:migrate
# Storybook 开发
pnpm --filter @nebutra/storybook dev
# 生产就绪检查
pnpm build && pnpm test && pnpm e2e
# 按包名
pnpm --filter @nebutra/ui typecheck
pnpm --filter @nebutra/billing test
# 按应用名(不含 @)
pnpm --filter landing dev
pnpm --filter web build
# 多个过滤器
pnpm --filter @nebutra/ui --filter @nebutra/tokens build
# 在所有包中运行脚本
pnpm -r typecheck
Turborepo 会在本地(可选远程)缓存任务输出。缓存命中时显示 cache hit, replaying output。
# 强制重新执行,绕过缓存
pnpm build --force
# 远程缓存(需要 Vercel 账号)
pnpm dlx turbo login
pnpm dlx turbo link
How is this guide?