1 个不稳定版本
0.1.2 | 2020年5月25日 |
---|
44 在 #handlebars
19KB
320 行
Stamp
一个用 Rust 编写的从模板创建一个或多个文件的命令行工具。
由于缺乏中间工具,Stamp 应运而生
- IntelliJ 支持从模板创建文件,但一次只能创建一个文件。
- 像 Cookiecutter 和 Yeoman 这样的工具速度慢,体积大,不适合快速使用。
安装
您需要已安装 rust 和 cargo。
cargo install stampr
遗憾的是,crate 名称 stamp
已经被占用。
您可能想要 alias=stamp=stampr
。
用法
命令行用法
可以使用 stampr -h
或 stampr --help
来查看命令行帮助,获取更多详细信息。
您还可以使用 stampr help <command>
。
列表
stampr list
将显示已安装的模板列表。传递 -v
标志也会显示每个模板在磁盘上的路径。
运行
stampr run <template>
将渲染一个模板并创建文件。
默认情况下,文件是相对于您的当前工作目录编写的。要更改此设置,请使用 -o
或 --out
。如果路径不存在,它将为您创建。
可以使用 -c
或 --context
标志指定模板的参数,并以 key=value
对的形式提供。任何未提供的参数都将提示您输入。这必须是最后一个标志。
示例
stampr run test --out /tmp/stamp-test -c greeting=Hello subject=World
创建模板
位置
模板可以存储在全局目录中或目录内。当寻找模板时,Stamp 将
- 在当前目录中寻找
.stamp/templates
文件夹 - 递归向上每个父目录,寻找相同的文件夹
- 检查全局目录
如果存在多个同名模板,将使用找到的第一个。这意味着您可以将模板包含在您的存储库中,并通过在文件夹内创建相同名称的模板来覆盖全局模板。
全局模板存储在当前用户的配置文件夹中。
- Linux:
~/.config/stamp/templates
- MacOS:
$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}}
。这意味着该目录将始终使用名称参数,并确保其格式为camelCase。
在该目录内,创建三个文件
{{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;
第三个可以保持为空。
现在运行您的模板
stampr run tsx-component -c name=testComponent
您应该看到一个名为 testComponent
的目录被创建,其中包含3个文件。
注意,如果您不想自动调整to_camel_case,可以避免使用上面的助手,只需使用
{{name}}
。
依赖项
~5–13MB
~146K SLoC