#template #handlebars #command-line-tool #cli

app stampr

一个从模板创建一个或多个文件的命令行工具

1 个不稳定版本

0.1.2 2020年5月25日

44#handlebars

MIT 许可证

19KB
320

Stamp

Rust

一个用 Rust 编写的从模板创建一个或多个文件的命令行工具。

由于缺乏中间工具,Stamp 应运而生

  • IntelliJ 支持从模板创建文件,但一次只能创建一个文件。
  • 像 Cookiecutter 和 Yeoman 这样的工具速度慢,体积大,不适合快速使用。

安装

您需要已安装 rust 和 cargo。

cargo install stampr

遗憾的是,crate 名称 stamp 已经被占用。

您可能想要 alias=stamp=stampr

用法

命令行用法

可以使用 stampr -hstampr --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