我尝试按照SASS guidelines的样式表进行操作。指南建议将文件中的所有代码放置在7个文件夹中(在我们的例子中为6个,因为Yii处理依赖关系)。
Yii2资产管道似乎只关注$sourcePath
更改,忽略了子目录。更改子目录中的文件不会触发重新编译。我不得不通过$config['components']['assetManager']['forceCopy'] = true;
强制重新编译,以确保在重新加载页面后编译所有内容。这会重新编译所有资产,只需重新编译scss
文件大约需要3倍。在马铃薯上工作变得非常烦人。
有没有一种简单的方法让Yii资产管道了解子目录,这样我每次都可以完全重新编译?
答案 0 :(得分:2)
事实上你可以,但需要一点努力。
在AsssetBundle::init()
- 函数中,查看是否有任何子文件夹的修改时间比普通文件夹中的修改时间更新,只有将forceCopy设置为true。
public function init()
{
parent::init();
$modified = filemtime($this->sourcePath)
foreach(['my', 'list', 'of', 'subfolders'] as $folder) {
$subfolderModified = filemtime($this->sourcePath . '/' . $folder);
if ($subfolderModified > $modified) {
$this->publishOptions['forceCopy'] = true;
break;
}
}
}
请注意,这主要是虚拟代码,但它只是为了向您展示我的想法的主旨。