4 个版本 (2 个重大更改)
0.3.0 | 2019年11月25日 |
---|---|
0.2.1 | 2019年11月11日 |
0.2.0 | 2019年11月11日 |
0.1.0 | 2019年10月30日 |
#408 in 配置
165KB
1.5K SLoC
quickproj
简约主义者项目创建
功能
- 使用本地和 Git 仓库进行模板管理
- 从现有模板初始化新项目
- 验证和解析 JSON 配置
- 通过用户输入覆盖配置变量(带验证)
使用示例
快速开始
-
从 发行页面 下载根据所使用的操作系统对应的可执行/二进制文件。
-
将可执行/二进制文件链接到操作系统,这样您可以在任何位置调用
quickproj
-
Linux / Mac OS
将二进制文件移动到
/usr/local/bin
目录并重新启动终端mv ~/Downloads/quickproj /usr/local/bin
-
Windows
- 右键单击 Windows 标志并选择
系统
菜单项。 - 单击
高级系统设置
按钮。 - 单击
环境变量
按钮。 - 选择您的
PATH
变量并单击编辑
按钮。 - 单击
新建
按钮。 - 将
quickproj
可执行文件的目录路径添加到其中。 - 连续单击几次
确定
按钮以应用更改。
- 右键单击 Windows 标志并选择
-
-
之后,您可以从任何文件夹调用
quickproj
命令。有关每个命令可接受的参数和选项的更多信息,请使用--help
选项调用任何所需的命令。
常见问题解答。
问:这个工具的目的是什么?
答:我制作这个工具是为了更容易地从零开始开发新项目。通过定义使用的模板,您可以更细致地控制您的需求以及如何准备新项目。
问:是否可以以多线程模式运行命令?
答:目前不能以多线程模式运行命令。尽管现有的代码库可以轻松地为此类事情进行更改,但我决定尽可能保持简单,以防止因大量 I/O 操作而“杀死”您的硬盘。
模板结构
每个安装的模板必须在根模板文件夹中有一个配置文件(命名为 config.json
),以及需要为新项目复制或生成的文件。
配置参数
以示例来说,我们将选择并修改现有的 quickproj
(原始文件)应用程序模板
{
"files":{
"sources": [
{ "from": "sources", "to": "." }
],
"generated": [
"configs/{{ terraform_sage_environment }}/variables.tfvars"
],
"directories": [
"configs/{{ terraform_sage_environment }}"
],
"templates": {
"variables.tfvars": "templates/variables.tfvars"
}
},
"variables": {
"terraform_sage_environment": [
"dev",
"production",
"staging"
],
},
"scripts": {
"after_init": [
"ls -al"
]
},
"storage": {
"variables": {
"service_name": "service"
}
}
}
配置文件必须保存为模板根目录下的 config.json
文件名。否则,quickproj
应用程序将忽略用户的模板。
文件部分
模板配置文件的主要部分。它存储了需要创建、复制或生成的文件和文件夹信息。
-
源文件
此部分存储用于复制文件的文件夹的路径。每个条目必须包含以下键
from
键表示从模板文件夹到需要复制到目标目录的文件的相对路径。to
键表示在目标文件夹中的相对路径,文件需要从源目录复制到该路径。
-
生成文件
定义了需要在目标文件夹中生成的模板的相对路径。每个路径可以是静态的(=硬编码的)或动态的(=使用配置变量)。为了使用此部分中的模板,用户必须在路径末尾指定所需的模板名称(与在
templates
部分中定义的键值相同)。
在上面的示例中,我们指定了一个动态路径,因此将根据variables.tfvars
模板生成三个文件,路径如下配置/开发/变量.tfvars
配置/生产/变量.tfvars
配置/预发布/变量.tfvars
-
目录
定义了在复制文件之前需要生成的目录。在示例中,
"configs/{{ terraform_sage_environment }}"
的值表示我们将创建三个不同的目录。其值将从terraform_sage_environment
变量中提取,该变量在variables
部分中指定。
在我们的示例中,应用程序将根据variables
部分中的动态路径和变量创建三个文件夹configs/dev/
configs/production/
configs/staging/
-
模板
定义了用于项目生成过程的记录列表,其中
- 键表示模板的文件名,可用于
generated
部分中 - 值表示在源文件夹中必须使用的模板的相对路径
- 键表示模板的文件名,可用于
变量部分
可选部分,存储在项目生成过程中可以使用的所有变量,如果用户指定了 CLI 中的 --override-all
或 --override
选项,则可以被覆盖。
本部分中指定的每个变量都必须满足以下要求
- 键只能表示为
string
类型。 - 值可以表示为
string
或string 数组
类型。
不符合要求的键/值对将被忽略,并在项目生成过程中不使用。
在重写阶段(当 CLI 要求您指定要重写的值时),您可以指定特定类型的任何正确值。
- 对于
string
类型,任何非空字符串。 - 非空字符串,每个值由
,
分隔,用于字符串数组
类型。
按 Enter
键或为某个键设置空字符串将导致使用配置中指定的默认值。
脚本部分
可选部分,描述了在模板安装过程中可以执行的一系列命令/脚本。
-
after_init
必须定义为字符串数组,其中每个字符串表示在模板安装过程之后需要执行的特定命令。例如,从上面的示例中,应用程序将执行
ls -al
命令来输出当前目录中的文件列表。
存储部分
可选部分,用作模板数据的存储,不提供对最终用户的访问以重写它们。
-
变量
可选。将模板变量定义为键值对,并支持访问主变量部分。
每个键值对必须满足以下要求
- 键只能表示为
string
类型。 - 值可以表示为
string
或string 数组
类型。 variables
部分中任何对内容的引用都必须指定为具有Vars.
前缀的字符串。例如:{{ Vars.my_variable }}
。
- 键只能表示为
许可协议
quickproj 在 BSD 许可下发布。有关更多详细信息,请参阅 LICENSE 文件。
依赖项
~14–24MB
~411K SLoC