mcstreetguy / fusion-debugger
Neos.Fusion 的调试插件。
Requires
- neos/flow: ^8.0
- neos/fusion: ^8.0
Requires (Dev)
- kint-php/kint: ^3.2
README
这是一个用于Neos CMS的简单插件,旨在改善Fusion DSL代码的调试。
概览
此插件有什么功能?
- 调试完全合并的Fusion原型定义
- 可视化(部分)合并的Fusion对象树
- 对Fusion文件进行语法错误检查
为什么需要它?
你在Neos中创建页面时是否遇到过一些非常奇怪的渲染问题?你是否曾想:“天啊,这究竟是怎么回事?它本应该做点不同的。”
那么你可能知道这个插件背后的原因,那就是改进调试。
在常见的Neos安装中,目前无法更深入地了解Fusion渲染背后的情况。它解析一些代码,做一些魔法,然后希望你的预期结果会出现。但实际发生了什么呢?
为了消除这种不确定性,此插件允许你可视化你通常看不到的东西:合并的Fusion原型配置和合并的对象树。
安装
通过composer要求安装此插件
composer require --dev mcstreetguy/fusion-debugger
如果composer拒绝安装此插件,请尝试要求特定版本的它。此项目的重大版本将始终与相应的Neos版本兼容。我们官方支持从3.0开始的所有Neos版本,尽管此时所有低于7.0的版本被视为遗留版本,将不再接收更新或新功能。
composer require --dev mcstreetguy/fusion-debugger:^8.0 # for Neos v8.x composer require --dev mcstreetguy/fusion-debugger:^7.0 # for Neos v7.x composer require --dev mcstreetguy/fusion-debugger:^5.0 # for Neos v5.x (legacy) composer require --dev mcstreetguy/fusion-debugger:^4.0 # for Neos v4.x (legacy) composer require --dev mcstreetguy/fusion-debugger:^3.0 # for Neos v3.x (legacy)
该插件提供单独的回滚版本,省略了类型提示,以便与较旧的PHP和Neos 2.3兼容
composer require --dev mcstreetguy/fusion-debugger:dev-backport
Neos之外的使用
由于该插件仅依赖于neos/flow
和neos/fusion
作为依赖项,因此只要你有两个所需组件可用,你实际上可以在Neos项目之外使用它。目前正在测试此过程,但任何关于Neos之外兼容性的反馈都将非常受欢迎。如果你遇到了在下面的故障排除部分中未涵盖的问题,请报告它们。
故障排除
无效控制器类名 "". 确保您的控制器位于名为"Command"的文件夹中,并且其名称以"CommandController"结尾
此错误仅在与安装插件后立即发生,因为这以某种方式破坏了Flow的内部代码缓存。
我们尚未找到此问题的根源,但希望尽快解决它!在此之前,我们建议在通过composer要求插件后强制清除应用程序缓存,因为安装期间的自动优雅清除可能是导致此问题出现的原因。
/path/to/flow flow:cache:flush --force
在某些边缘情况下,整个Flow CLI在安装后可能无法正常工作。在这种情况下,您需要手动清空相应的Data/Temporary
目录,这样Flow就可以再次运行。如果您不确定要删除哪些目录,您也可以一次性删除整个目录,这将导致Flow完全重新生成。
参考
命令
该插件为Flow CLI提供了几个命令。以下是供参考的列表。请参阅相应的帮助页面以获取更详细的信息。
fusion:debugprototype
mcstreetguy.fusiondebugger:fusion:debugprototype [--no-color] [--no-flatten] <prototype>
从解析的对象树中的__prototypes
键读取请求的原型定义,并非常仔细地解析包含的原型链,以便结果包含所有属性,无论是继承的还是显式定义的。为了提高可读性,此命令还包括类似语法高亮的功能,因为构建的树中的多个部分被着色(如eel表达式、进一步的原型名称或纯字符串)。此外,它通过删除空属性和合并内部属性(例如,纯值,因为这些值存储时带有三个属性,但可以不使用数组结构直接显示)来简化结果数据。如果这些额外的行为会损坏结果数据或您的终端不支持ANSI颜色,可以通过指定选项--no-color
或--no-flatten
来抑制这些行为。
fusion:showobjecttree
mcstreetguy.fusiondebugger:fusion:showobjecttree [--path <path>]
从所有Fusion文件构建对象树,并以ASCII树结构显示(排除__prototypes
键,因为我们已经为该键提供了上述命令)。您可以提供可选的点分隔路径,将加载该路径而不是整个树。(例如,./flow fusion:showobjecttree --path root.page
)
fusion:lint
mcstreetguy.fusiondebugger:fusion:lint [--package-key <packageKey>] [--verbose] [--quiet]
对每个Fusion文件进行语法错误检查,并列出有误的文件及其关联的包和文件路径。此命令旨在以编程方式检查Fusion源代码的正确性,实际上仍然是一个实验,但出于完整性考虑,已列出。
fusion:listprototypes
mcstreetguy.fusiondebugger:fusion:listprototypes [--no-format]
列出所有已知的Fusion原型名称。
如果指定了--no-format
选项,列表将缺少任何项目符号且返回未排序的结果。
配置
该插件提供了最少的配置选项。以下为供参考的列表。
fusionFilePathPatterns
用于搜索将加载的Fusion文件的文件路径模式的数组。
默认路径resource://@package/Private/Fusion/
已存在,便于使用。如果您的设置涉及除默认位置外的其他位置的Fusion文件,请在此处提供。
可以在模式内部使用以下占位符,它们将在评估时替换为实际值
版本控制
我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库上的标签。
作者
- Maximilian Schmidt - 所有者 - MCStreetguy
有关参与此项目的贡献者列表,请参阅。
许可协议
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。