php yii2中的资产包生成空文件

z9ju0rcb  于 2023-04-19  发布在  PHP
关注(0)|答案(3)|浏览(136)

资产包生成空JavaScript和CSS文件

namespace frontend\assets;

return [

    'bundles' => [
        'frontend\assets\AppAsset',

    ],

    'targets' => [
        'frontend\assets\AppAsset' => [
            'basePath' => 'e:/path/yii2.loc/www',
            'baseUrl' => '',
            'js' => 'js/{ts}.js',
            'css' => 'css/{ts}.css',
        ],
    ],

    'assetManager' => [
        'basePath' => 'e:/path/yii2.loc/www/assets',
        'baseUrl' => '',
    ],
];

config.php

return [

    'bundles' => [
        'frontend\assets\AppAsset',
    ],

    'targets' => [
        'frontend\assets\AppAsset' => [
            'basePath' => 'e:/path/yii2.loc/www',
            'baseUrl' => '',
            'js' => 'cache/{ts}.js',
            'css' => 'cache/{ts}.css',
        ],
    ],

    'assetManager' => [
        'basePath' => 'e:/path/yii2.loc/www/assets',
        'baseUrl' => '',
    ],
];

然后在控制台

yii asset e:\path\config.php e:\path\compressed.php
//compresed.php it's result file with name of compressed files

在配置中

'assetManager' => [
    'bundles' => require dirname(__DIR__) . '/assets/compressed.php',
],

CSS和JavaScript文件位于以下目录中:
e:/path/yii2.loc/www/css
然后呢
e:/path/yii2.loc/www/js
捆绑生成空以:
e:/path/yii2.loc/www/cache/css和e:/path/yii2.loc/www/cache/js
我做错了什么?

nkkqxpd9

nkkqxpd91#

在config.php中,尝试配置组件'assetManager',如以下LOC:

'components' => [
    'assetManager' => [
        'class' => 'yii\web\AssetManager', 
        'basePath' => 'YOUR_BASE_PATH' 
    ],  
],
k4aesqcs

k4aesqcs2#

您应该设置别名@web和@webroot,因为此文件将在控制台脚本中使用。然后使用别名设置basePath和baseUrl参数
查看更多信息https://www.yiiframework.com/doc/guide/2.0/en/structure-assets

dz6r00yl

dz6r00yl3#

根据提供的配置,资产包似乎是在正确的目录中生成的,即e:/path/yii2.loc/www/cache/。但是,生成的文件是空的,因为资产包无法找到要包含在包中的源文件。
要修复此问题,您需要确保AppAssetbundle的basePath属性指向您的源CSSJS文件所在的正确目录。根据您的目录结构,basePath属性的正确目录应该是e:/path/yii2.loc/www
因此,您需要更新AppAsset类,如下所示:

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

这里我们将basePath属性设置为**@webroot**,相当于e:/path/yii2.loc/www$css和**$js属性中应该包含源CSSJS文件相对于basePath的路径。
更新完
AppAsset类后,您可以再次运行yiiasset命令重新生成资产包,这应该会在e:/path/yii2.loc/www/cache/**目录下生成正确的CSS和JS文件。

相关问题