文档地址
http://www.yiiframework.com/doc-2.0/guide-structure-assets.html
有兴趣的同学可以先看下官方原文档
文档样例代码
<?php namespace app\assets; use yii\web\AssetBundle; class FontAwesomeAsset extends AssetBundle { public $sourcePath = '@bower/font-awesome'; public $css = [ 'css/font-awesome.min.css', ]; public $publishOptions = [ 'only' => [ 'fonts/', 'css/', ] ]; }
官方文档给出的说明是,如此配置之后仅发布 fonts 及 css 资源目录
The above example defines an asset bundle for the "fontawesome" package. By specifying the only publishing option, only the fonts and css subdirectories will be published.
但实际上,不会有任何资源文件被拷贝,包括 fonts 和 css 目录及其中的资源文件。
实测项目版本 yii2.0.12
排除了权限等其它因素之后,仔细的去核查了资源文件发布的源码,问题就出在 only 限制条件中的元素写法上
元素规则实际上需要符合正则表达式的部分需求。
有兴趣的同学可以进一步深挖一下 BaseFileHelper.php 中 copyDirectory 方法的源码
正确的写法其实很好理解,如下
public $publishOptions = [ 'only' => [ 'fonts/*', 'css/*', ] ];
由于直接参考的官方文档,但是出现资源文件未成功加载的异常... 在这个问题上花费了些不必要的精力
所以分享出来给大家, 希望大家不要踩同样的坑 :)