Symfony2 Assetic и Less Sourcemaps

Я не уверен, как я могу взломать фильтр assetic less для вывода файла sourcemap. Я имею в виду LessFilter здесь https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php

строки 145 и 146 – это то, где создан объект Symfony\Component\Process\Process

  $proc = $pb->getProcess(); $code = $proc->run(); 

Проблема состоит в том, что этот вывод помещается в один файл. Я не уверен, как создать второй файл sourcemap.

Как я могу расширить этот фильтр или взломать Assetic core, чтобы сделать эту работу?

Да, это подходящее место. Однако вам не нужно его взломать. Расширьте его!

Я использую это:

 # 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

Он расширяет метод filterLoad () фильтра Filters, добавляя два новых параметра дерева. Все доступные параметры дерева можно найти здесь:

https://github.com/less/less.js/blob/master/bin/lessc#L361-L378

Вы должны любить инъекцию зависимости:

Другой способ, с помощью которого я обнаружил, что исходное содержимое меньше, без использования путей, – использовать флаг outputSourceFiles, который объединяет меньше файлов в сгенерированный файл css (добавляет раздувание, поэтому используйте только в dev).

 <?php ... class LessFilter extends AsseticLessFilter { public function filterLoad(AssetInterface $asset) { $this->addTreeOption('sourceMap', true); $this->addTreeOption('outputSourceFiles', true); parent::filterLoad($asset); } }