Vin*_*rat 5 deployment assets symfony assetic
我创建了一个symfomy应用程序包,可用于从Android应用程序收集崩溃报告(对于那些对Android和ACRA感兴趣的人:https://github.com/marvinlabs/acra-server).
那些可以使用它的人可以简单地将该应用程序安装为常规的Symfony 2软件包,从GitHub获取并执行所需的所有命令行工作但我希望人们能够非常简单地安装该应用程序而不需要:
为此,我打包了一个包含整个Symfony代码+我的包的zip文件.问题:似乎找不到CSS和Javascripts,我仍然需要在服务器上运行命令:
php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)
问题1:我怎么能摆脱最后一步?
问题2:总的来说,在制作zip文件之前,你会在我的流程中添加什么?
在制作该zip文件之前,我就是这样做的:
我还执行以下命令:
php app/console cache:clear --env=dev
php app/console cache:clear --env=prod
php app/console doctrine:schema:create --env=dev --dump-sql > create-schema.sql
php app/console doctrine:schema:update --env=dev --dump-sql > update-schema.sql
php app/console assets:install --env=prod --no-debug
php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)
PS:
要为尝试排除故障的人安装说明:
编辑12/06/2013
~/acra-server/web$ ls -l css
total 10
-rw-r--r--+ 1 vincentp users 8990 May 23 18:26 d82d504.css
~/acra-server/web$ ls -l js
total 103
-rw-r--r--+ 1 vincentp users 104721 May 23 18:26 7cb568e.js
Run Code Online (Sandbox Code Playgroud)
:~/acra-server$ ls -l web/js
total 281
-rw-r--r--+ 1 vincentp users 205123 May 28 21:48 7cb568e.js
-rw-r--r--+ 1 vincentp users 21767 May 28 21:48 b96fe74.js
Run Code Online (Sandbox Code Playgroud)
我们可以看到已生成另一个JS文件(与CSS相同).我想Assetic并没有从解压缩中寻找合适的文件.有关如何纠正的任何想法?也许强迫资产使用给定的文件名?
( assetic 的输出选项)
您可以将资产集合配置为转储到给定的文件名。这可以通过输出选项在 twig 内部实现。不再自动生成文件名,例如7cb568e.js。
例子:
{% stylesheets
'bundles/mlabsacraserver/stylesheets/*'
filter='cssrewrite'
output='css/stylesheets.css'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
...或javascript...
{% javascripts
'bundles/mlabsacraserver/js/jquery.min.js'
'bundles/mlabsacraserver/js/*'
output='js/javascripts.js'
%}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
Run Code Online (Sandbox Code Playgroud)
现在 assetic 将使用给定的过滤器将您的资源转储到js/javascripts.js和css/stylesheets.css。
assetic 将转储这些资源的基本路径可以在 config.yml 中使用assetic.write_to和 defaults.to web/ 文件夹进行配置。
您可以做得更好并使代码更加结构化。您可以在 config.yml (或另一个导入的配置文件)中定义资产集合。
配置可以在assetic.assets下找到
例子:
# app/config.yml
assetic:
# ...
assets:
js_main:
inputs:
- "bundles/mlabsacraserver/js/jquery.min.js"
- "bundles/mlabsacraserver/js/*"
output: js/javascripts.js
css_main:
inputs:
- "bundles/mlabsacraserver/stylesheets/*"
filters:
- cssrewrite # ...add more if you like
output: css/stylesheets.css
Run Code Online (Sandbox Code Playgroud)
asset()
现在,您可以使用 assetic 的函数和@
带有相应集合名称的 - 语法在 twig 模板中使用这些集合。
例子:
<link href="{{ asset('@css_main') }}" type="text/css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
... 和 ...
<script src="{{ asset('@js_main') }}" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以配置 assetic 在何处查找您的 asset,使用单个配置参数更改名称,并将此逻辑保留在模板之外,从而使它们更具可读性且更易于维护。
结果输出示例:
<link href="/web/css/stylesheets.css" type="text/css" rel="stylesheet" />
<script src="/web/js/javascripts.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
现在,您的应用程序中有一个配置点,您可以在其中使用集合添加和删除资产,然后只需在模板中使用它们的引用名称。
您可以让您的用户输入他们的 MySQL 主机、用户和密码,并让 symfony 为您写入参数文件。
这就是当您第一次访问应用程序时symfony 标准版使用SensioDistributionBundle所做的事情。
执行实际写入parameters.yml的类是Sensio\DistributionBundle\Configurator\Configurator。
use Sensio\DistributionBundle\Configurator\Configurator;
Run Code Online (Sandbox Code Playgroud)
现在使用安装控制器中的配置器。
$configurator = new Configurator($this->get('kernel')->getRootDir());
$configurator->mergeParameters(array(
'my_parameter' = 'my_value',
'my_parameter2' = 'my_value2',
));
$configurator->write();
}
Run Code Online (Sandbox Code Playgroud)
最好的办法是查看 Configurator 类本身以了解它是如何工作的。
我现在可以领取赏金吗?;-)
归档时间: |
|
查看次数: |
1506 次 |
最近记录: |