运行后
php app/console assetic:dump --env=prod
全部资产被转储。
有没有办法只转储一个文件?
答案 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')
以获取其他内容。