surgiie/blade-cli

此包已被废弃且不再维护。作者建议使用surgiie/laravel-blade-cli包。

使用Laravel的blade引擎从命令行渲染文件。

维护者

详细信息

github.com/surgiie/blade-cli

来源

问题

安装: 386

依赖者: 0

建议者: 0

安全: 0

星标: 34

关注者: 0

分支: 3

开放问题: 0

类型:项目

v4.1.0 2023-11-25 03:37 UTC

README

废弃

该包已迁移并重构,不再维护,请使用laravel-blade-cli

Blade CLI 允许您使用Laravel的Blade引擎从命令行编译和保存任何文本文件。

tests

安装

要安装二进制文件,使用全局composer

composer global require surgiie/blade-cli

使用

例如,假设您当前目录中有一个名为person.yml的文件,其内容如下

name: {{ $name }}
relationship: {{ $relationship }}
favorite_food: {{ $favoriteFood }}
@if($includeAddress)
address: 123 example lane
@endif

您可以使用以下命令渲染此文件

blade render ./person.yml \
                --name="Bob" \
                --relationship="Uncle" \
                --favorite-food="Pizza" \
                --include-address

这将渲染文件,并以person.rendered.yml的名称将其保存在同一目录中,内容如下

name: Bob
relationship: Uncle
favorite_food: Pizza
address: 123 example lane

使用Docker进行渲染

如果您没有或不想安装php,可以使用提供的脚本运行渲染文件,该脚本将在临时Docker容器中运行cli渲染命令,并使用卷挂载必要的文件,然后将它们同步回宿主机

cd /tmp

wget https://raw.githubusercontent.com/surgiie/blade-cli/master/docker

chmod +x ./docker

mv ./docker /usr/local/bin/blade

blade <path> --var="example"

自定义文件名

默认情况下,所有文件都将保存在与正在渲染的文件相同的目录中,文件名为<filename>.rendered.<extension>或简单地<filename>.rendered,以防止覆盖原始文件。要使用自定义文件名或更改目录,请使用--save-to选项指定文件路径

blade render ./person.yml \
            ...
            --save-to="/home/bob/custom-name.yml"

注意:如果cli有权限,它将自动创建必要的父目录,否则将抛出错误。

变量数据

有三种方法可以将变量数据传递给正在渲染的文件,按照优先级顺序

  • 使用带有--from-yaml选项的YAML文件,并传递文件路径。此选项可以使用多次从多个文件中加载。
  • 使用带有--from-json选项的JSON文件,并传递文件路径。此选项可以使用多次从多个文件中加载。
  • 使用带有--from-env选项的env文件,并传递.env文件路径。此选项可以使用多次从多个文件中加载。
  • 使用渲染命令的任意命令行选项,如--example-var=value

变量命名约定

您的环境、YAML 和 JSON 文件键可以按照任何命名约定定义,但实际的变量引用必须使用驼峰式。这是因为 PHP 不支持中划线命名空间的变量,并且由于命令行选项使用这种格式,所有变量将自动转换为驼峰式。例如,如果您以以下格式传递选项或定义文件中的变量名称:favorite-foodfavoriteFoodfavorite_food,则该选项的变量应引用为 $favoriteFood 在您的文件中。

命令行变量类型

目前支持以下类型的变量:

  • 字符串/单值变量:使用单个选项键/值格式,例如 --foo=bar --bar=baz
  • 数组值变量:多次传递选项,例如 --names=Steve --names=Ricky --names=Bob
  • 布尔值变量(True):不传递值传递选项,例如 --should-do-thing

注意:由于变量选项是动态的,不支持“否定/False”选项。相反,您可以在文件中使用类似 {{ $shouldDoSomething ?? false }} 的方法来默认设置为 false,并使用 true 选项来“否定”值。

强制写入

如果您尝试渲染一个已存在的文件,将会抛出异常。要强制覆盖现有文件,请使用 --force 标志。

blade render ./person.yml \
                --name="Bob" \
                --relationship="Uncle" \
                --favorite-food="Pizza" \
                --include-address \
                --force # force overwrite person.rendered.yml if it already exists.

试运行/显示渲染内容

要在渲染单个文件时不保存它,请在使用 --dry-run 标志时渲染单个文件。

blade render example.yaml --some-var=example --dry-run

这将显示 example.yaml 的内容,而不保存它。

处理整个文件目录

在运行命令时,您也可以传递目录路径而不是单个文件。当您想一次渲染多个模板文件时,这可能很有用。

blade render ./templates --save-dir="/home/bob/templates" --some-data=foo

注意:此命令将提示您确认。要跳过确认,请添加 --force 标志。

注意:在渲染整个目录时,需要使用 --save-dir 选项将所有渲染的文件导出到单独的目录。正在处理的目录的目录结构将反映在保存文件的目录中。在上面的示例中,/home/bob/templates 将具有与 ./templates 相同的目录结构。

自定义编译目录

当将文件编译成纯 PHP 时,编译的文件默认存储在 /tmp/.blade-cli,如果您希望为这些文件使用自定义目录,可以使用 --cache-path 选项。

blade render myfile --var=foo --cache-path="/custom/directory"

在清除目录时,这也将需要

blade clear --cache-path="/custom/directory"

或者,您可以通过 BLADE_CLI_CACHE_PATH 环境变量来持久化路径,如果您不希望在每次命令调用中传递它。

贡献

以以下方式欢迎贡献:

  • 问题跟踪器
  • 拉取请求
  • 讨论

许可

该项目受 MIT 许可证的许可。