clarkwinkelmann/flarum-ext-scratchpad

轻松在您的开发论坛上测试代码

1.5.1 2021-05-28 12:17 UTC

README

MIT license Latest Stable Version Total Downloads Donate

除非您知道自己在做什么,否则请不要安装此扩展!

任何具有管理员访问权限的用户都可以在服务器和网站上运行任何JavaScript和PHP代码,没有任何限制!

此扩展为Flarum管理员面板添加了便笺功能,以简化开发者的测试和开发。

尽管此功能仅限于管理员用户,但我仍然建议只在本地环境中安装。

这仍然是一个非常实验性的项目。使用时请自行承担风险。

要求

  • 必须启用调试模式
  • 使用eval()运行PHP代码
  • 使用shell_exec()运行Node
  • Web用户必须能够运行npmnode命令

每个便笺可以包含JavaScript、Less和PHP代码,就像任何扩展一样。

您可以给单个便笺命名,并通过复选框启用/禁用它们。

尽管有检查措施,但您仍然有可能保存无效的代码。如果发生这种情况,最简单的方法是进入数据库并禁用负责的便笺。

在保存时,通过向论坛和行政首页发送包含新代码的“无状态”后台请求来验证PHP和Less。如果后台请求失败,则显示验证错误,并且便笺不会被保存。此后台请求可以在扩展设置中禁用。

在保存时不会验证JavaScript,但如果编译失败,编译后的代码将不会在论坛上加载,您将在编辑器中看到一条消息。

JavaScript编译是通过调用PHP中的node来本地完成的。将在storage下创建一个scratchpad文件夹。第一次编译时,将运行npm install。后续编译将重用已安装的依赖项。

如果您遇到无效的JavaScript设置,可以删除storage/scratchpad文件夹,扩展将在下一次编译时重新安装一切。

便笺页面的文本编辑器是 CodeMirror。您可以通过编辑器上方的齿轮图标自定义主题和缩进。目前设置是全局的,适用于所有语言。

安装

在安装之前,请阅读上面的免责声明和需求。

composer require clarkwinkelmann/flarum-ext-scratchpad

自定义NPM和Webpack命令

默认命令应该在大多数Linux系统上运行良好,但已知在某些配置上失败,包括(不出所料)Windows。

您可以通过编辑可通过编辑器上方的齿轮图标访问的模态窗口中的设置来编辑命令,这些设置名为“NPM install命令”和“Webpack命令”。

以下是默认命令。

{{path}}必须原样保留,并将替换为便笺文件夹的路径,相当于扩展的js文件夹。

在结尾处必须使用2>&1以将错误重定向到标准输出,以便编译器可以检查输出并查找错误消息。

NPM install

cd {{path}} && npm install 2>&1

Webpack

cd {{path}} && node_modules/.bin/webpack --mode development --config node_modules/flarum-webpack-config/index.js 2>&1

链接