12 个版本 (6 个重大变更)
0.7.1 | 2024 年 2 月 19 日 |
---|---|
0.7.0 | 2023 年 10 月 13 日 |
0.6.1 | 2022 年 9 月 7 日 |
0.6.0 | 2022 年 7 月 20 日 |
0.4.0 | 2021 年 11 月 13 日 |
#105 in 模板引擎
每月 61 次下载
340KB
1.5K SLoC
petridish
如果你听说过 cookiecutter
项目,petridish
是它的 Rust 实现。
功能
功能 | 描述 |
---|---|
跨平台 | Windows、Linux、MacOS |
更灵活的配置 | petridish 使用 toml 文件定义模板变量 |
更人性化的提示 | 支持不同类型的提示(input 、select 、multi select 、confirm ) |
强大的模板引擎 | 我们使用 tera 作为我们的模板引擎,它是基于 Jinja2/Django 的 |
一个二进制文件 | 一个二进制文件在任何地方运行 |
管理缓存模板 | 如果你下载了一个远程模板,它将被缓存,因此以后你可以直接使用其名称而不必再次下载。你还可以 list 或 remove 这些缓存模板 |
用法
类似于 cookiecutter
,你应该提供如下目录结构
让我们看看 petridish.toml
文件
[petridish]
project_prompt = "project name?"
project_var_name = "project_name"
short_description = "This is an awesome template"
[[prompts]]
name = "name"
prompt = "what's your name"
type = "string"
[[prompts]]
name = "age"
choices = [10, 20, 30]
default = 20
type = "number"
[[prompts]]
name = "hobby"
choices = ["running", "swimming"]
multi = true
type = "string"
[[prompts]]
name = "is_geek"
type = "bool"
default = true
Petridish 配置
字段 | 描述 | 可选 |
---|---|---|
project_prompt | 用于 project_var_name 的提示信息,默认为 project name? |
✅ |
project_var_name | 项目变量名称,默认为 project_name |
✅ |
short_description | 模板的简短描述,将在子命令 list 中显示 |
✅ |
long_description | 模板的详细描述,将在第一次提示之前显示(支持 Markdown 高亮) | ✅ |
提示配置
提示类型 | 字段 | 描述 | 可选 |
---|---|---|---|
字符串输入 | name | 模板变量名称 | |
提示 | 提示信息 | ✅ | |
默认 | 默认为空,支持模板渲染 | ✅ | |
正则表达式 | 正则表达式模式,提示值必须匹配该模式 | ✅ | |
类型 | 必须是 string |
||
数字输入 | name | 模板变量名称 | |
提示 | 提示信息 | ✅ | |
默认 | 默认为0 | ✅ | |
最小值 | 最小值 | ✅ | |
最大值 | 最大值 | ✅ | |
类型 | 必须是 number |
||
选择 | name | 模板变量名称 | |
提示 | 提示信息 | ✅ | |
选项 | 选项项 | ||
默认 | 默认值 | ✅ | |
类型 | string 或 number |
||
多选 | name | 模板变量名称 | |
提示 | 提示信息 | ✅ | |
选项 | 选项项 | ||
默认 | 默认值 | ✅ | |
多选 | 必须是 true |
||
可空 | 是否可以为空值,默认 false |
✅ | |
类型 | string 或 number |
||
确认 | name | 模板变量名称 | |
提示 | 提示信息 | ✅ | |
默认 | 默认值(默认 false ) |
✅ | |
类型 | 必须是 bool |
远程git缩写
petridish
知道Github(gh
)和GitLab(gl
)项目的缩写
格式应该是这样的 <abbreviation>[+<protocol>]:<namespace>/<project>
protocol
可以是:https, http, ssh,(默认是 https)
$ petridish new gh+https:petridish-dev/example
$ petridish new example # later you can just use its name
如果远程http(s)项目是私有的,petridish
将提示输入 username
和 password
进行授权。
示例
模板
Tera
模板只是一个文本文件,在渲染时变量和表达式会被值替换。语法基于 Jinja2 和 Django 模板。
有 3 种分隔符,且不能更改
- {{ 和 }} 用于表达式
- {% 和 %} 用于语句
- {# 和 #} 用于注释
更多语法细节可以在 tera
中找到。
依赖
~23–40MB
~688K SLoC