surgiie / blade-cli
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.4
- illuminate/http: ^10.0
- intonate/tinker-zero: ^1.2
- surgiie/console: ^4.1.0
- symfony/yaml: ^6.2
Requires (Dev)
- laravel-zero/framework: ^10.0
- laravel/pint: ^1.2
- mockery/mockery: ^1.4.4
- pestphp/pest: ^1.21.3
- dev-master
- v4.1.0
- v4.0.0
- v3.11.0
- v3.10.0
- v3.9.0
- v3.8.0
- v3.7.5
- v3.7.4
- v3.7.3
- v3.7.2
- v3.7.1
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-run-task
- dev-build-prep
- dev-remove-task
- dev-fix-class-issues
This package is auto-updated.
Last update: 2024-02-14 02:57:29 UTC
README
废弃
该包已迁移并重构,不再维护,请使用laravel-blade-cli
Blade CLI 允许您使用Laravel的Blade引擎从命令行编译和保存任何文本文件。
安装
要安装二进制文件,使用全局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-food
、favoriteFood
或 favorite_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 许可证的许可。