我想在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'
]
],
那么实现这个的正确方法是什么?提前谢谢!
答案 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();
}
不要忘记最后调用父实现。