Yii2资产转换器

时间:2014-09-15 14:16:10

标签: php less yii2

我试图在我的Yii2应用程序中使用Less。 我使用高级应用程序,并希望使用yii2中的资产转换器内置转换前端/ web / css中的.less文件。

'assetManager' => [
      'bundles' => [
            'yii\bootstrap\BootstrapAsset' => [                     
                 'css' => []
            ],

        ],
     'converter' => [
         'class' => 'yii\web\AssetConverter',
         'commands' => [
            'less' => ['css', 'lessc {from} {to} --no-color'],

         ],
        ],
    ],

以上是在我的main.php配置文件中。

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

以上是appAsset文件。

但如何在yii2安装中安装less工具?我把less-1.7.5.js放在我的yii控制台引导文件所在的根文件夹中,但是我必须在哪里调整配置以转换较少的文件?

提前谢谢!

3 个答案:

答案 0 :(得分:0)

安装较少的转换器:服务器端和命令行使用 http://lesscss.org/usage/

并确保命令在任何地方都可以作为lessc使用,即添加到PATH

答案 1 :(得分:0)

我刚在项目中做了什么:

main.php配置文件:

    'assetManager' => [
        'converter' => [
            'class' => 'yii\web\AssetConverter',
            'commands' => [
                'less' => ['css', 'nodejs "' . PROTECTED_BASE_PATH . 
                    '/node_modules/less/bin/lessc" {from} {to} --no-color'],
            ],
        ],
    ],

命令行(在子目录中,由上面的PROTECTED_BASE_PATH表示):

$ npm install less

这就是全部。在git拉到另一台机器上之后它工作正常。

当然,nodejs本身必须全局安装。

重要说明。这是将nodejs包装保存在VCS中的一种不寻常的方法(尽管我有理由这样做)。请考虑使用package.json。

答案 2 :(得分:0)

要使用composer命令安装较少的编译器(lessc):

composer require bower-asset/less

然后添加到config:

'assetManager' => [
    'converter' => [
        'class' => 'yii\web\AssetConverter',
        'commands' => [
            'less' => ['css', '@bower/less/bin/lessc {from} {to} --no-color'],
        ],
    ],
],

当您没有root权限且无法全局安装lessc时,此配置对共享主机很有帮助。