在哪里为dev / prod模式定义不同的资产文件? - Yii2

时间:2015-02-04 08:06:07

标签: php 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'
    ]
],

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

1 个答案:

答案 0 :(得分:2)

如果调试和生产服务器的文件数量不同,您可以在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();
}

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