我在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.json
或composer install
内运行app
,那么我最终会在该文件夹内找到一个mysite
目录,该目录未使用,因为已经有一个{{ 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中执行此操作。