3 个版本
0.1.2 | 2020 年 5 月 25 日 |
---|---|
0.1.1 | 2020 年 5 月 25 日 |
0.1.0 | 2020 年 5 月 25 日 |
38 在 #handlebars
19KB
320 行
Stamp
一个用 Rust 编写的从模板创建一个或多个文件的命令行工具。
Stamp 的出现是因为缺乏满足这一中间需求的开源工具。
- IntelliJ 支持从模板创建文件,但一次只能创建一个文件。
- 像 Cookiecutter 和 Yeoman 这样的工具启动速度慢,体积也太大,不适合快速使用。
安装
您需要安装 rust 和 cargo。
cargo install stamp-templates
令人遗憾的是,crate 名称 stamp
已经被占用。
用法
命令行使用
可以使用 stamp -h
或 stamp --help
查看命令行帮助,以获取更多详细信息。
您还可以使用 stamp help <command>
。
列表
stamp list
将显示已安装的模板列表。传递 -v
标志也将显示每个模板在磁盘上的路径。
运行
stamp run <template>
将渲染模板并创建文件。
默认情况下,文件将相对于您的当前工作目录写入。要更改此设置,请使用 -o
或 --out
。如果路径不存在,它将被为您创建。
可以使用 -c
或 --context
标志指定模板的参数,并以 key=value
对的形式提供。未提供的任何参数都将提示您输入。这必须是最后一个提供的标志。
示例
stamp run test --out /tmp/stamp-test -c greeting=Hello subject=World
创建模板
位置
模板可以存储在全局范围内或目录内。在查找模板时,Stamp 将
- 在当前目录中查找
.stamp/templates
文件夹 - 递归向上查找每个父目录,寻找相同的文件夹
- 检查全局目录
如果存在多个同名的模板,则使用第一个找到的模板。这意味着您可以将模板包含在您的存储库中,并可以通过在目录内创建同名模板来覆盖全局模板。
全局模板存储在当前用户的配置文件夹中。
- Linux:
~/.config/stamp/templates
- OSX:
$USER/Library/Preferences/stamp
- Windows:
%appdata%\stamp\templates
文件
要创建一个模板,只需在模板文件夹中创建一个以模板名称命名的目录。
该目录内的每个文件和文件夹都将进行模板化。文件名和内容使用 Handlebars 渲染。有多个辅助工具可用,列表可在此找到 这里。
模板中使用的变量将自动检测并在运行时转换为参数。
示例
一个可能的用例可能是构建一个 TypeScript React 组件,包括用于 props 的文件和用于样式的另一个文件。
最终目标是获得以下结构
testComponent
├── ITestComponentProps.ts
├── TestComponent.module.scss
└── TestComponent.tsx
要创建模板,在一个 Stamp 模板文件夹中创建一个名为 tsx-component
的文件夹。
在模板文件夹内,创建一个新的文件夹来存放组件文件。命名为 {{to_camel_case name}}
。这意味着该目录将始终采用名称参数并确保其为大驼峰命名。
在该目录内,创建三个文件
{{to_pascal_case name}}.tsx
I{{to_pascal_case name}}Props.ts
{{to_pascal_case name}}.module.scss
第一个文件包含对其他两个文件的导入以及一个基本的函数组件
import * as React from 'react';
import I{{to_pascal_case name}}Props from './I{{to_pascal_case name}}Props';
import styles from '{{to_pascal_case name}}.module.scss';
const {{to_pascal_case name}}: React.FC<I{{to_pascal_case name}}Props> = () => {
return <span />;
};
export default {{to_pascal_case name}};
第二个包含一个空接口
interface I{{to_pascal_case name}}Props {
}
export default I{{to_pascal_case name}}Props;
第三个可以保持为空。
现在运行您的模板
stamp run tsx-component -c name=testComponent
您应该看到一个名为 testComponent
的目录被创建,其中包含 3 个文件。
注意,如果您不希望自动调整名称,可以避免使用上述辅助工具,只需使用
{{name}}
。
依赖
~6–14MB
~168K SLoC