Исходные карты Symfony2 Assetic и Less

Я не уверен, как я могу взломать фильтр без активов для вывода файла исходной карты. Я имею в виду 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();

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

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


person Mike    schedule 17.06.2014    source источник
comment
В итоге я полностью удалил Assetic из своего приложения. Инструменты сборки, такие как Gulp и Grunt, позволяют мне делать все, что мне нужно.   -  person Mike    schedule 29.09.2014


Ответы (2)


Да, это правильное место. Однако взламывать его не нужно. Продлите!

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

# 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

Вы должны любить внедрение зависимостей :)

person spezifanta    schedule 21.08.2014
comment
Как я могу принудительно создать файлы .map (требуемые для автоматической перезагрузки CSS в Chrome DevTools) вместо встроенных карт. Пробовал sourceMapOutputFilename и sourceMapFilename безуспешно. - person Steven Pribilinskiy; 11.09.2014

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

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

        parent::filterLoad($asset);
    }
}
person James Broad    schedule 25.11.2014