symfony2:使用assetic-dump,可以只转储一个文件吗?

时间:2015-03-15 23:33:52

标签: symfony assetic

运行后

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

全部资产被转储。

有没有办法只转储一个文件?

3 个答案:

答案 0 :(得分:8)

看起来你必须创建自己的命令:

<?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显示了一种更简单的转储资产的方式,但是我找不到任何有关AsseticBundle内部的文档,我只读了the code of the Command

答案 1 :(得分:1)

这是仅使用配置的解决方案。在配置文件中,将bundle保留为:

bundles: []

除非您手动指定资产,否则不会从任何捆绑中加载资产。

使用此处所述的命名资产来单独加载您想要的资产。

http://symfony.com/doc/current/cookbook/assetic/asset_management.html#using-named-assets

答案 2 :(得分:0)

我有一个类似问题的难度很大的解决方案,因为我需要来自数据库或json文件的twig模板上没有转储资产。

仅使用资产名称,我不明白如何在没有进一步解释的情况下完成此操作。如果在运行资产转储时打印$ name值,则会得到类似于&#39; afd49f7&#39;的内容。 Symfony2读取树枝模板上的所有javascripts和样式表块,并自动分配此键名。

如果您尝试手动缩小一个文件,最好直接使用yui-compressor或类似文件,否则如果您确实需要将资产集合转储到一个文件(一个集合只能包含一个文件)或单个文件但是使用symfony2你必须使用&#34;命名资产&#34;和parla建议的命令类似。请参阅How to Use Assetic for Asset Management上的相应部分,并查看AsseticBundle Configuration

无论如何,上面的命令不能在Symfony2 v2.3(LTS)上运行,因为dumpAsset方法在DumpCommand上声明为private,而AbstractCommand不存在。

如果您使用Symfony2 v2.3,则需要重写整个命令添加选项--name并更改->setName('assetic:dump')以获取其他内容。