2015-03-15 5 views
10

Nachsymfony2: mit assetic-dump, ist es möglich, nur eine Datei abzulegen?

php app/console assetic:dump --env=prod 

alle die Vermögenswerte dumpped läuft.

Gibt es eine Möglichkeit, nur eine Datei abzulegen?

+0

Wo lebt diese einzelne Datei? Wenn ich es richtig verstanden habe, wollen Sie etwas wie das Auswählen von Dateien zum Generieren, ohne die aktuelle Funktionalität von Assetic zu unterbrechen – MKoosej

Antwort

6

Sieht aus wie Sie Ihren eigenen Befehl erstellen müssen:

<?php 

namespace Your\Namespace\Command; 

use Symfony\Bundle\AsseticBundle\Command\AbstractCommand; 

class DumpSingleAsset extends AbstractCommand 
{ 
    protected function configure() 
    { 
     $this 
      ->setName('assetic:dump_single_asset') 
      ->setDescription('Dumps a single asset') 
      ->addArgument('name', InputArgument::REQUIRED, 'The name of the asset') 
     ; 
    } 


    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     $name = $input->getArgument('name'); 
     $this->dumpAsset($name, $output); // Inherited from AbstractCommand 
    } 
} 

Assetic docs zeigt eine Art und Weise einfache Weise Vermögen auszugeben, aber ich konnte keine Dokumentation der AsseticBundle Interna finden, ich habe gerade gelesen the code of the Command.

0

Ich habe meine eigene harte knifflige Lösung für ein ähnliches Problem, weil ich Dump muß Vermögenswerte nicht vorhanden auf Zweig Vorlagen aus der Datenbank oder JSON-Datei kommen.

Nur mit Asset-Namen, ich verstehe nicht, wie Sie es ohne weitere Erklärung tun könnten. Wenn Sie $ name value beim Ausführen von assetic dump ausgeben, erhalten Sie etwas wie 'afd49f7'. Symfony2 liest alle Javascripts und Stylesheet-Blöcke auf Zweigvorlagen und weist diesen Schlüsselnamen automatisch zu.

Wenn Sie versuchen, eine Datei manuell zu verkleinern, verwenden Sie besser yui-compressor o.ä. direkt, andernfalls müssen Sie eine Sammlung von Assets in eine Datei speichern (eine Sammlung könnte nur eine Datei enthalten) oder eine einzelne Datei, aber mit symfony2 Sie müssen "benannte Assets" und so etwas wie den von parla vorgeschlagenen Befehl verwenden. Siehe den entsprechenden Abschnitt auf How to Use Assetic for Asset Management und überprüfen Sie auch AsseticBundle Configuration.

Trotzdem funktioniert der obige Befehl nicht auf Symfony2 v2.3 (LTS) Ursache dumpAsset-Methode wird als private auf DumpCommand deklariert, und AbstractCommand nicht vorhanden.

Wenn Sie Symfony2 v2.3 verwenden, müssen Sie die gesamte Befehlshinzufügungsoption --name neu schreiben und ->setName('assetic:dump') für etwas anderes ändern.

Verwandte Themen