Symfony 2 - 使用资产

Posted

技术标签:

【中文标题】Symfony 2 - 使用资产【英文标题】:Symfony 2 - Working with assets 【发布时间】:2012-04-13 10:32:36 【问题描述】:

我需要一些关于如何在 Symfony 2 中使用资产的技巧。例如,我们是否必须始终执行 assets:update 每次添加图像?我知道 Assetic 负责管理 css 和 javascript 文件,但是图像呢? Symfony 2 前端开发的最佳实践是什么?你们如何在应用中设置 css、图像和 js 文件以使其易于开发、部署和更改?

【问题讨论】:

assets:update 是真正的命令吗?我在其他任何地方都没有发现它,也无法在 Symfony/Assetic 代码库中找到它。如果它确实存在,我很想知道更多。 相关:***.com/questions/12123069/… 【参考方案1】:

关于图片,如果你把它添加到你的公共文件夹中,我认为没有必要执行assets:update

但是,如果您将图像添加到捆绑包的资源文件夹中,则可能必须这样做,具体取决于您的操作系统以及调用 assets:install 时使用的选项

如果您使用的是支持符号链接的操作系统(Linux、OS X,我猜除了 Windows 之外的所有操作系统),您可以安装资产调用(我不完全记得调用,这里重要的是符号链接选项):

php app/console assets:install web --symlink

这样,您将拥有一个符号链接,而不是拥有每个捆绑资源的副本,因此无需更新。如果您的操作系统不支持符号链接,我认为您必须不断更新或重新安装资产(事实上,我一直使用assets:install,我不知道有更新选项:P)。

关于设置,如果只在bundle内使用,我通常将所有css、js、图像和任何公共资源放在一个bundle中,如果它被许多bundle使用,则将它放在public文件夹中,或者我计划在其他包中使用它。

【讨论】:

另外,如果您使用 Composer 更新您的供应商软件包,请不要忘记在您的 composer.json 文件 (see docs) 中设置 "extra": "symfony-assets-install": "symlink" symlink 在管理员模式下运行 cmd(或 git bash)时也可以在 Windows 上运行。 :) 因为 Assetic 与 Windows 支持的 php.net/manual/en/function.symlink.php 一起使用。【参考方案2】:

从 Symfony 2.7 开始,这将在 web 目录中生成相对符号链接:

php app/console assets:install web --symlink --relative

在 composer.json 中添加:

"extra": 
    "symfony-assets-install": "relative"

这也会在composer update 上生成相对符号链接。

【讨论】:

由于 composer.json 已提交,因此在生产环境的安装过程中使用,我不确定您是否希望直接在 composer.json 中使用它。【参考方案3】:

考虑一下--symlink 很酷。您可以配置(配置)一次并永久使用。如果您想要更多http://www.w3docs.com/snippets/symfony/how-to-keep-symlinks-in-web-bundles-after-composer-update.html

【讨论】:

以上是关于Symfony 2 - 使用资产的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2资产过滤器异常中的指南针

symfony2 - 资产资产:转储命令不能正确创建样式表

Symfony 2 - 资产 JavaScript 压缩导致错误

在 symfony2 中使用资产的源映射

Symfony 2 Assetic 致命错误:在资产转储中找不到类“Assetic\Util\PathUtils”

如何使 Symfony 2 资产编译以产生不同的文件名?