assetic 不会在 prod symfony 2 中生成
assetic doesn't generate in prod symfony 2
如标题所述,我的 js / css / assetic 中的图像不会在产品中生成
我把它们都放在 base.html.twig 中,像这样
{% block stylesheets %}
{% stylesheets
'@BlubirdCrmBundle/Resources/public/css/bootstrap.min.css'
'@BlubirdCrmBundle/Resources/public/css/bootstrap-theme.min.css'
'@BlubirdCrmBundle/Resources/public/css/bbgrid.css'
....
output='css/compiled/all.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
{% javascripts
'@BlubirdCrmBundle/Resources/public/js/jquery-2.1.3.min.js'
'@BlubirdCrmBundle/Resources/public/js/bootstrap.min.js'
....
output='js/compiled/all.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
和我的图片:
{% image '@BlubirdCrmBundle/Resources/public/images/loadingSpinner.gif' %}<img id="spinner" src="{{ asset_url }}"/>{% endimage %}
在开发中一切正常
但在产品中它不会生成我随时间添加的新 js 和图像。
在我的应用程序中,我的内核是这样生成的:
$kernel = new AppKernel('prod', false);
在任何人告诉我之前
./console cache:clear --env=prod --no-debug
./console assetic:dump --env=prod --no-debug
我无法使用我的 ovh 服务器访问控制台,所以我必须手动连接服务器并删除缓存中的文件
我试图删除 /web 文件中的旧编译文件,但没有生成任何内容...
知道如何在没有控制台的情况下做到这一点吗?
谢谢!
您需要找到一种方法来执行此操作:
./console assetic:dump --env=prod --no-debug
在开发模式下,资产通过控制器链接到资产。控制器找到正确的资产,在必要时构建它并交付给浏览器。这就是它在开发模式下工作的原因。
在 prod 模式下,这种方法会太慢,因此 assetic 需要预先生成文件,以便静态提供它们。这就是为什么你需要找到一种方法来执行该命令。
如果无法在服务器上 运行 控制台命令,可以在开发服务器上生成生产资产,将文件添加到源代码管理,然后将它们与其余部分一起部署代码。
有点偏离主题,但 assetic 通常被更流行的和框架独立的前端工具所取代,例如 gulp。默认情况下,Assetic 不再与 symfony 3 捆绑在一起。尽管几个月前它在 symfony 文档中被描述为 "best practice"。
如标题所述,我的 js / css / assetic 中的图像不会在产品中生成
我把它们都放在 base.html.twig 中,像这样
{% block stylesheets %}
{% stylesheets
'@BlubirdCrmBundle/Resources/public/css/bootstrap.min.css'
'@BlubirdCrmBundle/Resources/public/css/bootstrap-theme.min.css'
'@BlubirdCrmBundle/Resources/public/css/bbgrid.css'
....
output='css/compiled/all.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
{% javascripts
'@BlubirdCrmBundle/Resources/public/js/jquery-2.1.3.min.js'
'@BlubirdCrmBundle/Resources/public/js/bootstrap.min.js'
....
output='js/compiled/all.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
和我的图片:
{% image '@BlubirdCrmBundle/Resources/public/images/loadingSpinner.gif' %}<img id="spinner" src="{{ asset_url }}"/>{% endimage %}
在开发中一切正常
但在产品中它不会生成我随时间添加的新 js 和图像。
在我的应用程序中,我的内核是这样生成的:
$kernel = new AppKernel('prod', false);
在任何人告诉我之前
./console cache:clear --env=prod --no-debug
./console assetic:dump --env=prod --no-debug
我无法使用我的 ovh 服务器访问控制台,所以我必须手动连接服务器并删除缓存中的文件
我试图删除 /web 文件中的旧编译文件,但没有生成任何内容...
知道如何在没有控制台的情况下做到这一点吗?
谢谢!
您需要找到一种方法来执行此操作:
./console assetic:dump --env=prod --no-debug
在开发模式下,资产通过控制器链接到资产。控制器找到正确的资产,在必要时构建它并交付给浏览器。这就是它在开发模式下工作的原因。
在 prod 模式下,这种方法会太慢,因此 assetic 需要预先生成文件,以便静态提供它们。这就是为什么你需要找到一种方法来执行该命令。
如果无法在服务器上 运行 控制台命令,可以在开发服务器上生成生产资产,将文件添加到源代码管理,然后将它们与其余部分一起部署代码。
有点偏离主题,但 assetic 通常被更流行的和框架独立的前端工具所取代,例如 gulp。默认情况下,Assetic 不再与 symfony 3 捆绑在一起。尽管几个月前它在 symfony 文档中被描述为 "best practice"。