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

Posted

技术标签:

【中文标题】symfony2:使用assetic-dump,可以只转储一个文件吗?【英文标题】:symfony2: using assetic-dump, is possible to dump just one file? 【发布时间】:2015-05-18 00:27:21 【问题描述】:

运行后

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

所有资产被转储。

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

【问题讨论】:

单个文件在哪里?如果我做对了,您希望在不破坏资产当前功能的情况下生成诸如选择文件之类的东西 【参考方案1】:

对于类似的问题,我有自己的棘手的棘手解决方案,因为我需要来自数据库或 json 文件的树枝模板上不存在的转储资产。

只有资产名称,如果没有进一步的解释,我不明白你怎么能做到。如果在运行资产转储时打印 $name 值,则会得到类似“afd49f7”的内容。 Symfony2 读取 twig 模板上的所有 javascripts 和样式表块并自动分配此键名。

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

无论如何,上面的命令在 Symfony2 v2.3 (LTS) 上不起作用,因为 dumpAsset 方法在 DumpCommand 上被声明为私有,而 AbstractCommand 不存在。

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

【讨论】:

【参考方案2】:

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

bundles: []

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

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

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

【讨论】:

【参考方案3】:

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

<?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。

【讨论】:

我不敢相信你救了我的命,这太有用了。要添加的一件重要事情是,作为参数传递的资产的名称是 ex。 352e254,这是转储的 .js 文件的初始名称(仍然找不到他们用来分组此资产文件的确切模式,可能是来自同一文件夹的文件)。

以上是关于symfony2:使用assetic-dump,可以只转储一个文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Doctrine (symfony2) 中对可翻译实体进行版本控制

在 Symfony2 路由中,如何设置可选的子域

Symfony2 Assetic:无法解析节点可执行文件的路径

Symfony2 在每个循环上更改元素样式

在 symfony2 原则可翻译中将翻译后备更改为 true 的位置

symfony2 ContextErrorException:可捕获的致命错误:类 Proxies\__CG__\...\Entity\... 的对象无法转换为字符串