如何使用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。
答案 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。
希望有所帮助。