Skip to content

Thiết lập monorepo

Làm một lần trên máy để phát triển core. Team sản phẩm chỉ dùng framework thì không cần — xem Chuẩn bị môi trường.

Công cụ

Công cụPhiên bảnGhi chú
Node.js24 (CI dùng node:24), tối thiểu 22.13pnpm 11 không chạy trên Node cũ hơn 22.13
pnpm11.7.0Ghim ở packageManager; corepack enable tự dùng đúng bản
GitBản bất kỳRemote SSH cổng 2222

Máy có nhiều bản Node (nvm, fnm…) thì kiểm tra node -v trong đúng terminal sẽ chạy lệnh — sai bản Node là lỗi thường gặp nhất khi pnpm báo This version of pnpm requires at least Node.js v22.13.

Lấy code và cài

bash
git clone ssh://git@gitlab.dnpwater.vn:2222/tasco/web-framework-core.git
cd web-framework-core
corepack enable
pnpm install
pnpm build

Mọi @tasco/* trong monorepo là workspace package nên pnpm install không cần token registry. Quyền cần có trên GitLab: Git workflow.

pnpm build build mọi package theo thứ tự phụ thuộc; chạy lại sau khi kéo code mới hoặc sau pnpm clean.

Cấu trúc

packages/
  theme/ utils/          TS thuần — token, lỗi, helper
  composables/           composable Nuxt
  ui/                    component C* (+ Storybook chạy cục bộ)
  nuxt-layer-base/       layer: plugin, middleware, BFF, IAM
  ai/ mcp/ cli/          AI, MCP server, create-tasco-app
  eslint-config/ tsconfig/
playground/              app Nuxt thử layer, đăng nhập giả
docs/                    VitePress — site này
scripts/                 docs-coverage, release-guard, port-antadmin
.changeset/              changeset chưa phát hành
.gitlab/                 template MR và issue

Vai trò từng package: Kiến trúc nội bộ.

Chạy khi phát triển

ViệcLệnhĐịa chỉ
App thử layerpnpm turbo run dev --filter=playgroundhttp://localhost:3000
Site docspnpm turbo run dev --filter=docshttp://localhost:5173/v2/
Storybook (chỉ chạy cục bộ)pnpm --filter @tasco/ui storybookhttp://localhost:6006
Test một packagepnpm --filter @tasco/ui test
Test một filepnpm --filter @tasco/utils test -- src/error.test.ts
Kiểm tra như CIpnpm lint && pnpm typecheck && pnpm test && pnpm test:scripts && pnpm build

Playground và docs chạy qua turbo để package phụ thuộc được build trước. Chạy thẳng pnpm --filter playground dev khi package chưa build sẽ gặp TSCONFIG_ERROR — xem gotcha.

Playground

App Nuxt extends layer bằng workspace:*, bật sẵn auth.mock nên đăng nhập bằng tài khoản bất kỳ.

TrangĐể thử
/Trang công khai (auth: false)
/ordersDanh sách dùng useTable + CTable, dữ liệu từ route giả server/api/orders.get.ts; cần quyền /orders/search
/adminChặn quyền: cần /admin/settings mà người dùng giả không có → trang 403
/ui-kitBày các component C*

Sửa component hay layer rồi thử ở đây trước khi mở MR; mô tả bước thử trong mục Test plan của MR.

Thử template CLI

bash
node packages/cli/bin/create-tasco-app.mjs ../thu-app

App sinh ra ghim @tasco/* theo version hiện tại của CLI và cài từ registry — nó dùng bản đã phát hành, không dùng code đang sửa. Muốn thử thay đổi chưa phát hành thì dùng playground.

AI tooling trong repo core

.mcp.json ở gốc chạy @tasco/mcp thẳng từ source (node packages/mcp/bin/cli.mjs), nên phải pnpm --filter @tasco/mcp build trước. Skill /new-component/doc-component có trong .claude/skills/. Chi tiết: MCP & AI review.

Sự cố thường gặp

Triệu chứngCách sửa
This version of pnpm requires at least Node.js v22.13Chuyển sang Node 24 trong terminal đang dùng
[TSCONFIG_ERROR] Failed to load tsconfig '../packages/nuxt-layer-base/.nuxt/tsconfig.json'pnpm build, rồi khởi động lại dev server (Vite giữ cache tsconfig hỏng)
ERR_PNPM_IGNORED_BUILDS sau khi thêm dependencyQuyết định true/false cho package đó trong allowBuilds của pnpm-workspace.yaml
Bảng API trong docs báo "Chưa có metadata…", hoặc docs không chạy vì thiếu component-meta.jsonpnpm --filter @tasco/ui build
Trang tra cứu API trống hoặc cũChạy lại dev docs — trang sinh mỗi lần dev/build

Liên quan