我有一个分叉的SS3.x模块,通过composer从它的fork中拉下来,并开始移植到SS4。到目前为止一切都那么好,除非涉及到要求。
我正在使用另一个模块中现有代码中的Requirements格式,该格式具有冒号分隔格式,如下所示:
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的过程,那么它只是有点令人困惑,因为代码会在任何地方对我们进行采样。肯定是哪个不是/供应商的直接网址。
答案 0 :(得分:4)
在跟踪基本上使用/ resources目录的代码之后找到这个。我的查询的简短回答就是运行
composer vendor-expose
这会调用执行此复制的VendorExposeTask。我发现使用此任务的唯一其他地方是VendorPlugin安装方法。所以我假设除了上面的命令之外,SS实际上代表你做这件事的唯一方法是初始安装模块。