在哪里为开发/生产模式定义不同的资产文件?- Yii2.


Where to define different asset files for dev/prod mode? - Yii2

我想在 Yii2 中使用不同的 js 文件进行开发和生产模式。开发模式有很多未缩小的文件,尽管生产将只有一个文件。

开发资产如下所示:

namespace frontend'assets;
use yii'web'AssetBundle;
class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/main.css',
    ];
    public $js = [
        'js/app/_variables.js',
        'js/app.js',
        'js/app/_api_conn.js',
        'js/app/_docCookies.js',
        'js/app/ ..... .js',
    ];
    public $depends = [
        'yii'bootstrap'BootstrapPluginAsset',
    ];
}

我希望在生产模式下拥有这样的特定捆绑包,已经在本地合并和缩小:

namespace frontend'assets;
use yii'web'AssetBundle;
class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/main.css',
    ];
    public $js = [
        'js/wfapp_all_min.js',
    ];
    public $depends = [
        'yii'bootstrap'BootstrapPluginAsset',
    ];
}

正如 Yii2 文档所解释的那样,有一种方法可以做到这一点,但我找不到在哪里添加它(该示例适用于 jquery 资产,但似乎也适用于我的情况):

'yii'web'JqueryAsset' => [
    'js' => [
        YII_ENV_DEV ? 'jquery.js' : 'jquery.min.js'
    ]
],

那么实现这一点的正确方法是什么?提前感谢!

如果调试服务器和生产服务器的文件数量不同,您可以在初始化期间在 init() 方法中设置它们:

public function init()
{
    $this->js = !YII_DEBUG ? ['js/wfapp_all_min.js'] : [
        'js/app/_variables.js',
        'js/app.js',
        'js/app/_api_conn.js',
        'js/app/_docCookies.js',
        'js/app/ ..... .js',
    ];
    parent::init();
}

不要忘记在最后调用父实现。