在哪里为 dev/prod 模式定义不同的资产文件? - 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 documentation 所解释的那样,只有一种方法可以执行此操作,但我找不到添加它的位置(该示例适用于 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();
}

别忘了在最后调用父实现。