简体中文 | English
CAZ (Create App Zen)
这是一个基于模板机制、简单而强大的脚手架工具,用于提升我个人生产力,受启发于 Yeoman、Vue CLI 2 等项目。
更多介绍,请阅读它如何工作。
稍后我会给出具体的理由。
# 全局安装
$ npm install -g caz
# 或者使用 yarn 安装
$ yarn global add caz
使用模板创建一个新项目。
$ caz <template> [project] [-f|--force] [-o|--offline]
# 使用官方模板
$ caz <template> [project]
# 使用 GitHub 仓库(自定义模板)
$ caz <owner>/<repo> [project]
如果您只是偶尔使用它,我建议您使用 npx
直接运行 caz
。
$ npx caz <template> [project] [-f|--force] [-o|--offline]
-f, --force
: 如果目标存在就覆盖掉-o, --offline
: 尝试使用本地离线缓存模板$ caz nm my-project
此命令会从 caz-templates/nm 拉取模板,然后根据模板的配置,询问你一些问题,最后生成项目在 ./my-project
。
$ caz nm#typescript my-project
运行此命令,CAZ 将从 caz-templates/nm 的 typescript
分支拉取模板。
$ caz zce/nm my-project
此命令会从 zce/nm 拉取模板。这意味着你也可以从你的公开 GitHub 仓库拉取模板。
注意:模板必须使用公开的仓库。
你也可以使用本地文件系统的模板。
例如:
$ caz ~/local/template my-project
以上命令将使用 ~/local/template
文件夹作为模板。
你也可以使用 zip 压缩包的模板。
例如:
$ caz https://cdn.zce.me/boilerplate.zip my-project
以上命令将从 https://cdn.zce.me/boilerplate.zip
下载并解压模板。
$ caz nm my-project --offline
运行以上命令,CAZ 将尝试从缓存中找到 nm
模板,如果找不到该模板的缓存,它仍将自动从 GitHub 下载。
CAZ 允许你通过命令行参数来指定提示问题的答案。
$ caz minima my-project --name my-proj
运行以上命令,你就不用再回答接下来 name
的问题了。
$ caz nm my-project --debug
--debug
参数将打开调试模式。
在调试模式下,一旦发生异常,命令行将自动输出异常详细信息。这对于查找模板中的错误非常有帮助。
显示全部可用的模板:
$ caz list [owner] [-j|--json] [-s|--short]
[owner]
: GitHub 组织或用户的别名, 默认值:'caz-templates'
-j, --json
: 以 JSON 格式输出-s, --short
: 以精简格式输出目前 CAZ 可用的官方模板有:
可能还有更多:https://github.com/caz-templates
你也可以通过运行
$ caz list
命令来实时列出所有官方模板。
目前所有模板都托管在 GitHub 上,中国用户可以使用在 coding.net 上镜像。
CAZ 将会读取 ~/.cazrc
配置文件,默认配置:
; 模板下载地址
; {owner} & {name} & {branch} 最终将被相应的值替换。
registry = https://github.com/{owner}/{name}/archive/{branch}.zip
; 模板缺省 owner 的值,可以理解为官方名称
official = caz-templates
; 缺省的模板分支名称
branch = master
这就意味着你可以通过修改配置文件来自定义配置。
例如,你的 ~/.cazrc
:
registry = https://gitlab.com/{owner}/{name}/archive/{branch}.zip
official = faker
branch = main
然后运行以下命令:
$ caz nm my-project
这样就会从 https://gitlab.com/faker/nm/archive/main.zip
下载模板。
由于网络限制,很多时候下载 GitHub 上的模板都会超时,你可以考虑使用我在 coding.net 上镜像的模板。
~/.cazrc
:
registry = https://zce.coding.net/p/{owner}/d/{name}/git/archive/{branch}
official = caz
$ caz template my-template
以上命令会从 caz-templates/template 下载模板,并帮你创建你自己的 CAZ 模板。
创建并发布模板,详细可以请参考 如何创建模板。
也许 fork 一个官方模板是一个更好的决定。
# 本地安装 caz 模块
$ npm install caz
# 或者使用 yarn 安装
$ yarn add caz
以 ESM 和 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)
}
或者使用 CommonJS 和 Promise 的方式:
const { default: caz } = require('caz')
const template = 'nm'
// project path (relative cwd or full path)
const project = 'my-project'
const options = { force: false, offline: false }
// scaffolding by caz...
caz(template, project, options)
.then(() => {
// success created my-project by nm template
})
.catch(e => {
// error handling
console.error(e)
})
这也就意味着你可以基于 CAZ 模块开发自己的脚手架工具。
创建并发布脚手架工具,详细可以请参考 如何创建脚手架工具。
使用指定模板创建一个新项目
string
string
'.'
object
{}
boolean
false
boolean
false
any
👉 🛠 ⚙
开个玩笑:我就是想造个轮子 ;P
真实的原因是因为我觉得我需要一个更适合我的个人生产力的脚手架工具:简洁、强大、高效。现存的工具因为出发点的不同,都或多或少有一定的局限性。
再无其他
P.S. 图片来自互联网,但是我没有记住具体来源,这里对愿作者说声抱歉。
以下中间件将按顺序依次执行:
require
加载模板的配置文件。setup
钩子函数。npm | yarn | pnpm install
。git init && git add && git commit
。complete
钩子函数。以下是我想要实现或者正在开发的功能:
也可以查看 打开的 Issues 中有关建议功能(和已知问题)的列表。
git checkout -b my-awesome-feature
git commit -am 'Add some feature'
git push -u origin my-awesome-feature
提示: 请确保尝试合并你的修改之前已经拉取了上游最新的代码。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型