Silverstripe 4 - CSS 和 JS 要求。 How/what 填充 /resources 目录?

Silverstripe 4 - CSS and JS Requirements. How/what populates the /resources directory?

我有一个已分叉的 SS3.x 模块,通过 composer 从它的分叉中拉下来,并开始移植到 SS4。到目前为止一切顺利,除了要求方面。

我正在使用在另一个模块中的现有代码中找到的需求格式,其冒号分隔格式如下:

Requirements::javascript('company/mymodule:javascript/SortableUploadField.js');

此文件存在于 /vendor/company/mymodule/javascript/SortableUploadField.js 的模块中。但是在页面加载时,我在控制台中有一个 404,因为 SS 正在 /resources/company/mymodule/css/SortableUploadField.css 寻找这个文件。而这个是不存在的。

我在模块的 composer.json 文件中添加了以下内容,因为我看到其他模块这样做:

"extra": {
    "installer-name": "sortableuploadfield",
    "expose": [
        "css",
        "javascript"
    ]
},

和运行作曲家更新。但是 /resources 目录没有出现这个模块(其他模块在那里)。我在网上找不到任何关于它应该如何工作的信息。

编辑:作为旁注,我想知道 documentation for Requirements 是否具有误导性?它省略了模块的警告和资源目录的提及。如果该文档只是为了传达在正常的 mysite 开发中使用 JS/CSS 的过程,那么它只是有点令人困惑,因为代码到处都是我们的样本。这肯定不会直接 ​​url 指向 /vendor 中的某些内容。

跟踪基本上使用/resources 目录的代码后发现了这个。对我的查询的简短回答只是 运行

作曲家公开

这会调用执行此复制的 VendorExposeTask。我发现使用此任务的唯一其他地方是 VendorPlugin 安装方法。所以我假设除了上述命令之外,SS 实际代表您执行此操作的唯一方法是在初始安装模块时。