Skip to content

CLI create-tasco-app

@tasco/cli có một lệnh, create-tasco-app, dựng dự án Nuxt mới đã extends layer. Hướng dẫn từng bước: Tạo app mới.

Cú pháp

bash
npx @tasco/cli <tên-dự-án> [--pm <pnpm|npm|yarn>]

pnpm dlx @tasco/cli <tên-dự-án> cho kết quả như nhau. Cần .npmrc trỏ registry @tasco trước — xem Chuẩn bị môi trường.

Tham sốBắt buộcMặc địnhÝ nghĩa
<tên-dự-án>KhôngHỏi trong terminalTên thư mục sẽ tạo, đồng thời là name trong package.json, tên image Docker và tên project compose
--pm <tên>KhôngpnpmChỉ đổi lệnh in ở phần "Các bước tiếp theo"; nội dung dự án giữ nguyên

Tên dự án được dùng nguyên văn — CLI không kiểm tra. Đặt chữ thường, nối bằng gạch ngang (tasco-orders): tên package npm và tên image Docker đều không nhận chữ hoa hay dấu cách.

Kết quả

Tình huốngMã thoátThông báo
Thành công0✔ Đã tạo project Tasco tại ./<tên> kèm các bước tiếp theo
Không nhập tên1✖ Thiếu tên project.
Thư mục đã tồn tại và có file1✖ Thư mục "<tên>" đã tồn tại và không rỗng.

Thư mục đã tồn tại nhưng rỗng thì CLI dùng luôn.

Cách sinh file

  1. Chép toàn bộ templates/app của package vào thư mục mới.

  2. Đổi tên file ẩn (npm không đóng gói file bắt đầu bằng dấu chấm):

    Trong templateSau khi sinh
    _gitignore.gitignore
    _npmrc.npmrc
    _env.example.env.example
    _dockerignore.dockerignore
  3. Thay placeholder trong mọi file:

    PlaceholderGiá trị
    __APP_NAME__Tên dự án
    __TASCO_VERSION__^ + version của chính CLI đang chạy, vd ^2.0.0; không đọc được thì latest

Dự án sinh ra

FileNội dung chính
package.json@tasco/nuxt-layer-base, @tasco/ui, @tasco/eslint-config, @tasco/tsconfig cùng version của CLI; engines.node ^22.19.0 || ^24.11.0 || >=26.0.0; packageManager ghim cùng bản pnpm của core
nuxt.config.tsextends: ['@tasco/nuxt-layer-base']
app/app.config.tsappTitle, footerText, topNav, nav mẫu dùng icon @tabler/icons-vue
app/pages/index.vueTrang chủ công khai (auth: false) có nút đăng nhập/đăng xuất
app/pages/orders/index.vueTrang danh sách mẫu chạy offline: CPageHeader, useTable, CTable, CStatus, CTag, nút theo quyền
.env.exampleMọi biến của layer kèm chú thích
.npmrcScope @tasco trỏ group endpoint, token đọc từ ${NPM_TOKEN}
pnpm-workspace.yamlallowBuilds cho pnpm 11+
eslint.config.mjs, tsconfig.jsonPreset vue của @tasco/eslint-config; tsconfig kế thừa .nuxt/tsconfig.json
Dockerfile, .dockerignore, docker-compose*.yml, scripts/deploy-prod.shBuild và chạy image — xem CI/CD & Deploy
.gitlab-ci.ymlcheckbuilddeploy
CLAUDE.md, .mcp.json, .claude/settings.jsonNgữ cảnh và guardrail cho AI tooling — xem AI tooling cho dev
README.mdLệnh chạy, link tài liệu /v2/

Lệnh trong dự án

LệnhViệc
pnpm devnuxi dev
pnpm buildnuxi build — output ở .output/
pnpm previewnode .output/server/index.mjs
pnpm typechecknuxi prepare && vue-tsc --noEmit
pnpm linteslint .
pnpm checklint rồi typecheck — Docker stage check và job CI check chạy lệnh này

Nâng cấp dự án đã tạo

CLI chỉ chạy một lần lúc tạo. Nâng framework thì đổi version @tasco/* trong package.json rồi pnpm install; file sinh từ template (CI, Dockerfile, .npmrc) không tự cập nhật — đối chiếu với template của bản mới khi changelog nhắc tới. Xem Nâng cấp phiên bảnChangelog.