我不确定如何破解资产较少的过滤器来输出源图文件。我在这里指的是LessFilter https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php
lines 145 and 146是创建Symfony\Component\Process\Process
对象的地方
$proc = $pb->getProcess();
$code = $proc->run();
麻烦的是这个输出放在一个文件中。我不知道如何生成第二个源图文件。
如何扩展此过滤器或破解Assetic核心以使其工作?
答案 0 :(得分:5)
是的,这是正确的选择。但是,您不需要破解它。扩展它!
我用这个:
# Using less source maps with Symfony
namespace Acme\MyBundle\Assetic;
use Assetic\Asset\AssetInterface;
class LessFilter extends AsseticLessFilter
{
public function filterLoad(AssetInterface $asset)
{
$sourcemapRoot = realpath(dirname($asset->getSourceRoot() . '/' . $asset->getSourcePath()));
$this->addTreeOption('sourceMap', true);
$this->addTreeOption('sourceMapBasepath', $sourcemapRoot);
parent::filterLoad($asset);
}
}
// config.yml
assetic:
filters:
less:
class: Acme\MyBundle\Assetic\LessFilter
我在这里发现了这个: https://github.com/thomaswelton/blog/blob/master/articles/symfony/using-less-source-maps.md
它通过添加两个新的树参数来扩展Filters的filterLoad()方法。所有可用的树参数都可以在这里找到:
https://github.com/less/less.js/blob/master/bin/lessc#L361-L378
你必须喜欢依赖注射:)
答案 1 :(得分:0)
我发现另一种显示原始内容较少的文件内容的方法是使用outputSourceFiles标志将较少的文件捆绑到生成的css文件中(添加膨胀只在dev中使用)。
<?php
...
class LessFilter extends AsseticLessFilter
{
public function filterLoad(AssetInterface $asset)
{
$this->addTreeOption('sourceMap', true);
$this->addTreeOption('outputSourceFiles', true);
parent::filterLoad($asset);
}
}