sema / minifier-bundle
此包允许您在不使用Java VM的情况下压缩HTML代码,合并并压缩JavaScript文件和CSS文件。
dev-master
2015-02-18 09:02 UTC
Requires
- php: >=5.3.2
- kriswallsmith/assetic: ~1.2
- mrclay/minify: *
- symfony/console: ~2.3
- symfony/dependency-injection: ~2.1
- symfony/framework-bundle: ~2.1
This package is not auto-updated.
Last update: 2024-09-28 17:02:10 UTC
README
此Symfony2包允许您在不使用Java VM的情况下压缩HTML代码,合并并压缩JavaScript文件和CSS文件。
安装
使用composer.json安装
如果您使用composer管理项目,只需将以下行添加到您的composer.json文件中
{
"require": {
"sema/minifier-bundle": "dev-master"
}
}
然后更新供应商库
composer.phar update # OR composer.phar update sema/minifier-bundle # to only update the bundle
注册包
您必须在您的kernel中注册该包
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Sema\Bundle\MinifierBundle\SemaMinifierBundle(),
);
// ...
}
使用方法
压缩HTML代码有两种选择
- onKernelResponse监听器
- Twig扩展
使用onKernelResponse监听器启用压缩HTML代码
您需要在config.yml中添加以下行
#app/config.yml sema_minifier: enable_listener: true
所有响应都将被压缩
使用Twig扩展启用压缩HTML代码
您需要修改基本模板(base.html.twig或layout.html.twig或类似),在文件顶部添加{% minifyhtml %}并在文件底部添加{% endminifyhtml %}。您需要得到如下内容
#base.html.twig {% minifyhtml %} <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>{% block title %}Welcome!{% endblock %}</title> {% block stylesheets %}{% endblock %} <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> </head> <body> {% block body %}{% endblock %} {% block javascripts %}{% endblock %} </body> </html> {% endminifyhtml %}
##使用合并和压缩js或css文件 配置文件是一个JSON文件,它描述了合并静态文件的所有规则。每个组被分配一个文件名,我们在模板中引用它。这允许您不依赖于文件的实际位置,这在更改文件结构时可能很有用。以下是示例配置文件assets.json
{ "css": { "main": { "output": "assets/css/dist/main.min.css", "input": [ "bundles/framework/css/structure.css", "bundles/framework/css/body.css" ] } }, "js": { "vendor": { "output": "assets/js/dist/vendor.min.js", "input": [ "assets/libs/jquery/dist/jquery.js" ] }, "html5shiv": { "output": "assets/js/dist/html5shiv.min.js", "input": "assets/libs/html5shiv/dist/html5shiv.js" }, "form": { "output": "assets/js/dist/form.min.js", "input": [ "assets/libs/parsleyjs/dist/parsley.js", "assets/libs/jquery-ui/jquery-ui.js", "assets/js/form.js" ] } } }
根据调试模式,扩展将传递一个模式或源文件数组,或处理文件数组。以下是一个示例模板
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>{% block title %}Welcome!{% endblock %}</title> {% block stylesheets %} {% for url in assets.css['main'] %} <link rel="stylesheet" href="{{ asset(url) }}" /> {% endfor %} {% endblock %} <!--[if lt IE 9]> <script src="{{ asset(assets.js['html5shiv'][0], version='1') }}"></script> <![endif]--> <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> </head> <body> {% block body %}{% endblock %} {% block javascripts %} {% for url in assets.js['vendor'] %} <script src="{{ asset(url) }}"></script> {% endfor %} {% endblock %} </body> </html>