Caz
A simple yet powerful template-based Scaffolding tools.
Install / Use
/learn @zce/CazREADME
English | 简体中文
Introduction
CAZ (Create App Zen)
It's a a simple template-based Scaffolding tools for my personal productivity, inspired by Yeoman & Vue CLI 2 & etc.
- pronounced: [kæz] 📷 ✌
- written: CAZ / caz
For more introduction, please refer to the How it works.
Features
- Easy to use
- Light-weight
- Still powerful
- High efficiency
- Zero dependencies
- Template-based
- Configurable
- Extensible
- TypeScript
- Use modern API
I'll give you specific reasons later.
Table of Contents
- Introduction
- Getting Started
- Recipes
- Official Templates
- Advanced
- References
- Motivation
- About
- Roadmap
- Contributing
- License
Getting Started
Prerequisites
- Node.js (>= 16.x required, >= 18.x preferred)
- npm (>= 7.x) or pnpm (>= 6.x) or yarn (>= 1.22)
- Git (>= 2.0)
Installation
# install it globally
$ npm install -g caz
# or yarn
$ yarn global add caz
Quick Start
Create new project from a template.
$ caz <template> [project] [-f|--force] [-o|--offline]
# caz with an official template
$ caz <template> [project]
# caz with a github repo
$ caz <owner>/<repo> [project]
If you only use it occasionally, I recommend that you use npx to run caz directly.
$ npx caz <template> [project] [-f|--force] [-o|--offline]
Options
-f, --force: Overwrite if the target exists-o, --offline: Try to use an offline template
Recipes
GitHub Repo Templates
$ caz nm my-project
The above command pulls the template from caz-templates/nm, then prompts for some information according to the configuration of this template, and generate the project at ./my-project.
$ caz nm#typescript my-project
By running this command, CAZ will pulls the template from typescript branch of caz-templates/nm.
Use Custom templates
$ caz zce/nm my-project
The above command pulls the template from zce/nm. This means that you can also pull templates from your public GitHub repository.
Public repository is necessary.
Local Templates
Instead of a GitHub repo, you can also use a template on your local file system.
e.g.
$ caz ~/local/template my-project
The above command use the template from ~/local/template.
Remote ZIP Templates
Instead of a GitHub repo, you can also use a template with a zip file uri.
e.g.
$ caz https://cdn.zce.me/boilerplate.zip my-project
The above command will download & extract template from https://cdn.zce.me/boilerplate.zip.
Offline Mode
$ caz nm my-project --offline
By running this command, CAZ will try to find a cached version of nm template or download from GitHub if it's not yet cached.
Prompts Override
CAZ allows you to specify prompt response answers through cli parameters.
$ caz minima my-project --name my-proj
By running this command, you don't have to answer the next name prompts.
Debug Mode
$ caz nm my-project --debug
--debug parameter will open the debug mode.
In debug mode, once an exception occurs, the exception details will be automatically output. This is very helpful in finding errors in the template.
List Available Templates
Show all available templates:
$ caz list [owner] [-j|--json] [-s|--short]
Arguments
[owner]: GitHub orgs or user slug, default:'caz-templates'
Options
-j, --json: Output with json format-s, --short: Output with short format
Official Templates
Current available templates list:
- template - for creating caz templates.
- nm - for creating node modules.
- vercel - for creating vercel apps.
- react - for creating modern react apps.
- vue - for creating modern vue.js apps.
- vite - for creating vue.js apps powered by vite.
- electron - :construction: for creating electron apps.
- mp - :construction: for creating wechat mini-programs.
- jekyll - :construction: for creating jekyll site.
- x-pages - for creating x-pages static site.
Maybe more: https://github.com/caz-templates
You can also run
$ caz listto see all available official templates in real time.
All templates are currently hosted on GitHub, Chinese users can use the mirror on coding.net.
Advanced
Configuration
CAZ will read the configuration file in ~/.cazrc, default config:
; template download registry
; {owner} & {name} & {branch} will eventually be replaced by the corresponding value.
registry = https://github.com/{owner}/{name}/archive/{branch}.zip
; template offlicial organization name
official = caz-templates
; default template branch name
branch = master
This means that you can customize the configuration by modifying the configuration file.
For example, in your ~/.cazrc:
registry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip
official = faker
branch = main
Then run the following command:
$ caz nm my-project
The above command will download & extract template from https://gitlab.com/faker/nm/archive/main.zip.
Mirror for Chinese
Due to network limitations, the template download may time out, you can consider using the mirror repository I configured on coding.net.
~/.cazrc:
registry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}
official = caz
Socks Proxy
CAZ supports socks proxy config.
~/.cazrc:
proxy = socks5://127.0.0.1:1080
or environment variable:
$ ALL_PROXY=socks5://127.0.0.1:1080 caz nm my-project
Create Your Template
$ caz template my-template
The above command will pulls the template from caz-templates/template, and help you create your own CAZ template.
To create and distribute your own template, please refer to the How to create template.
Maybe fork an official template is also a good decision.
Create Your Scaffold
# install it locally
$ npm install caz
# or yarn
$ yarn add caz
with ESM and async/await:
import caz from 'caz'
try {
const template = 'nm'
// project path (relative cwd or full path)
const project = 'my-project'
const options = { force: false, offline: false }
// scaffolding by caz...
await caz(template, project, options)
// success created my-project by nm template
} catch (e) {
// error handling
console.error(e)
}
or with CommonJS and Promise:
const { default: caz } = require('caz')
const template = 'nm'
// project pa
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
