如何构造Silverstripe环境以进行模块开发和测试?

时间:2018-08-27 17:16:50

标签: silverstripe silverstripe-4

我在silverstripe.org上搜索了多个博客文章,它们都导致不再存在有关模块开发的视频/教程,因为Silverstripe重用了它们的整个“课程”部分,该部分现在重点介绍如何将整个Silverstripe网站修改为满足您的需求。

我正在努力寻找和理解的是什么,模块开发的工作流程是什么?通常,如何构造Silverstripe实例来开发和测试模块?在4.x和3.x上都一样?

模块存储库包含核心代码和模块以及模块本身所需的任何资产,当然还包含composer.json,其中列出了模块所依赖的库和模块。问题是,如果我克隆存储库并运行composer install,它将安装所有存储库,但是我没有获得安装程序随附的Silverstripe的引导代码-因此,我无法像这样测试我的模块。

我的直觉告诉我,我应该在运行的Silverstripe实例(即mysite的{​​{1}}(3.x)或app(4.x)文件夹中开发模块代码),但后来我担心依赖跟踪-在这种思路,开发所需的模块和库中,最终是在composer create-project silverstripe/silverstripe-installer ./project-dir中而不是在./project-dir/composer.json中进行跟踪。手动在每个./project-dir/<mysite or app>/composer.json之间复制我的依赖项似乎容易出错并且违反直觉。而且,如果我尝试在composer.jsoncomposer install内运行app,那么我最终会在该文件夹内找到一个mysite目录,该目录未使用,因为已经有一个{{ 1}}网站正在上一级使用该目录。

1 个答案:

答案 0 :(得分:1)

代替使用某种“模块创建器向导”,不可避免地会涉及一些手动工作。

对于SilverStripe 4,我通常要做的是在根项目中创建一个文件夹mymodule,然后开始在其中进行开发。

下一步是创建一个存储库并定义一个composer.json文件,其中包含一些基本要求(例如silverstripe / framework)。然后,您可以提交并推送它,并使用Composer将其拖入SilverStripe 4项目中(通过VCS存储库配置或通过Packagist)。

从这里开始,您至少有一个代码居住的地方。如果您将新模块设置为"type": "silverstripe-vendormodule",则它将安装到vendor/yourname/yourmodule中。您可以根据需要在此处修改代码。

您还可以将类型定义为"type": "silverstripe-module",并将其安装到项目根目录中。不过,大多数模块都在SilverStripe 4中供不应求,因此建议也照做。

在SilverStripe 3中,您可以执行相同的操作,但是由于SilverStripe 3模块的Composer安装程序默认将它们放入项目根目录,因此您可以在根项目中立即创建诸如mymodule之类的任意文件夹名称开始在其中发展。

SilverStripe清单将读取其中没有_manifest-exclude文件的任何文件夹,并且其中有_config.php文件或_config文件夹,因此很容易获得您可以随时将该文件夹转换为自己的模块,删除它,然后再次包含在Composer要求中。您也可以在SilverStripe 4中执行此操作。