如何减少在laravel 4中使用basset的工作量?

时间:2013-05-25 15:28:07

标签: php less laravel laravel-4

如何使用basset启用较少的编译?我的basset配置文件集合:

'collections' => array(

    'application' => function($collection)
    {
        $collection->apply('UriRewriteFilter');

        $directory = $collection->directory('../app/assets/stylesheets', function($collection)
        {
            $collection->add('less/design.less')->apply('Less');
        });
        $directory->apply('CssMin');
    }
);

配置中的其他所有内容都不受影响。

在源代码中,我得到了这个:
<link rel="stylesheet" type="text/css" href="http://localhost/Job/public/ph7mOzIaRTYLhvwL/application/6f5128120be8f13c4a2109051990f113/design.css" />

甚至认为它是.css但它没有被编译进去。

减少过滤器

'Less' => array('LessFilter', function($filter)
        {
            $filter->whenAssetIs('*.less')->findMissingConstructorArgs();
        }),

我正在使用Windows。

2 个答案:

答案 0 :(得分:4)

除了使用node.js构建器以外,您还可以使用php less builder:

将以下要求添加到您的composer.json:

"require": {
    "leafo/lessphp": "*"
}
composer update

将basset配置文件中的Less过滤器别名更改为:

'Less' => array('LessphpFilter', function($filter)

答案 1 :(得分:2)

我刚遇到这个问题,并试图解决这个问题。我正在使用Mac OS X,但它可能是同样的问题 - 即。看起来它已经编译了,我得到了与你一样的长CSS文件名,但LESS没有编译。

我在Basset的错误日志中看到了以下内容:

[2013-06-03 20:13:13] basset.ERROR: Failed to find required 
constructor argument for filter "LessFilter". 
(Parameter #0 [ <optional> $nodeBin = '/usr/bin/node' ])

所以我意识到LESS过滤器正在寻找Node.js来进行实际的编译。我没有安装Node.js ...所以我安装了它,然后再次运行php artisan basset:build application

有效。

你有没有安装Node.js?如果没有,我认为你需要这样做。然后你需要安装实际的模块,例如npm install less将从命令行运行时安装LESS。

一旦你完成了这一点,Windows告诉可执行文件的路径(即LESS编译器)有点棘手,所以你可能需要自己输入一些路径。这里有更多信息:“Windows兼容性”部分下的http://jasonlewis.me/code/basset/4.0/filters#filter-executables

希望有所帮助。