Symfony2资产和更少的源图

时间:2014-06-17 04:45:25

标签: php symfony less assetic source-maps

我不确定如何破解资产较少的过滤器来输出源图文件。我在这里指的是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核心以使其工作?

2 个答案:

答案 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);
    }
}