@boltz.one/create-app
v0.1.1
Published
Scaffold một monorepo Turborepo mới cho Boltz One, dùng ESLint/TypeScript config chung từ npm
Downloads
309
Maintainers
Readme
@boltz.one/create-app
CLI scaffold một monorepo Turborepo mới cho Boltz One, dùng ESLint/TypeScript config chung từ npm. CLI viết bằng TypeScript và chạy bằng Bun.
Sử dụng
# Cách khuyến nghị
bun create @boltz.one/app my-app
# Hoặc chạy trực tiếp
bunx @boltz.one/create-app my-appBỏ trống tên project, CLI sẽ hỏi tương tác. Sau khi tạo xong:
cd my-app
bun install
bun run devYêu cầu có Bun trên máy (bin dùng shebang
#!/usr/bin/env bun).
Tùy chọn:
| Cờ | Ý nghĩa |
| --- | --- |
| -h, --help | In trợ giúp |
| -v, --version | In phiên bản |
Điểm khác biệt: config dùng chung từ npm
Khác với starter Turborepo mặc định (có sẵn 2 package config local
packages/eslint-config + packages/typescript-config), template này không
chứa package config local. ESLint và TypeScript config được kéo trực tiếp từ
npm:
Nhờ vậy mọi app sinh ra luôn dùng đúng một nguồn config chung, nâng cấp tập trung qua việc bump version trên npm thay vì sửa file rải rác trong từng repo.
Cấu trúc project sinh ra
my-app/
├── apps/
│ ├── app/ # TanStack Start (React) app
│ └── api/ # Hono API app
├── packages/
│ └── ui/ # Thư viện React component dùng chung (@repo/ui)
├── package.json # workspaces: apps/*, packages/*
└── turbo.jsonpackages/ui minh hoạ cách tiêu thụ config npm:
// packages/ui/package.json
"devDependencies": {
"@boltz.one/eslint-config": "^0.1.1",
"@boltz.one/typescript-config": "^0.1.0"
}// packages/ui/eslint.config.mjs
import { config } from "@boltz.one/eslint-config/react-internal";
export default config;// packages/ui/tsconfig.json
{ "extends": "@boltz.one/typescript-config/react-library.json" }Phát triển CLI
bun install # cài dev deps (@types/bun, typescript)
bun run check-types # tsc --noEmit
bun bin/create-app.ts <ten-thu-muc> # chạy thửTemplate nằm trong template/. Lưu ý: các file .gitignore được lưu dưới tên
gitignore (không dấu chấm) để không bị npm bỏ qua khi publish; CLI tự khôi phục
lại tên .gitignore khi scaffold.
Phát hành
Bump version trong package.json rồi đẩy tag v*:
git tag v0.1.0 && git push origin v0.1.0Workflow .github/workflows/publish-create-app.yml sẽ validate (check-types +
smoke test) và publish lên npm (idempotent — bỏ qua nếu version đã tồn tại).
Cần secret NPM_TOKEN trên repo.
License
MIT
