cypresslab / compass-elephant-bundle
将CompassElephant集成到Symfony2
Requires
- php: >=5.3.0
- cypresslab/compass-elephant: 0.2.*
- symfony/console: ~2.3
- symfony/framework-bundle: ~2.3
- symfony/http-kernel: ~2.3
Requires (Dev)
- phpunit/phpunit: ~4.3
README
一个用于在Symfony2项目中使用CompassElephant库的Bundle
此Bundle会扫描您的每个请求中的compass项目,并检查是否需要重新编译。它处理依赖项,因此您可以使用compass与@import、sprite生成等功能而不会出现问题。让Symfony监控您的项目并忘掉它。
注意
此Bundle的版本 >= 0.1 不再使用原生检查器,因为1.x版本后的compass不再支持它。
staleness_checker选项仍然可用以保持兼容性,但它会被忽略。
安装
composer
在symfony项目的根目录中输入以下命令即可使用composer安装
$ composer require cypresslab/compass-elephant-bundle:~1.0
注册Bundle
在dev部分中的AppKernel.php文件中注册Bundle
app/AppKernel.php
<?php if (in_array($this->getEnvironment(), array('dev', 'test'))) { // ...other bundles ... $bundles[] = new Cypress\CompassElephantBundle\CypressCompassElephantBundle(); }
配置
在config文件中添加配置(用于开发环境)
app/config_dev.yml
cypress_compass_elephant: compass_projects: my-nice-project: path: %kernel.root_dir%/../src/Cypress/DemoBundle/Resources/public/compass
my-compass-project是此示例的随机名称。选择您想要的名称
path必须是现有目录。默认情况下,如果目录为空,CompassElephant将尝试初始化compass项目
对您的服务器CPU温柔一些:在生产环境中移除监听器,因为它不是必需的。您将提供静态CSS文件
app/config_prod.yml
cypress_compass_elephant: register_listener: false
重要
请记住,apache用户需要写入“sass”文件夹、“stylesheet”文件夹和config.rb文件的权限。如果您使用compass默认设置,则所有内容都在同一项目文件夹中。您可以授予所有文件的权限。但您也可以将stylesheets文件夹的位置更改为项目外。CompassElephant解析配置文件并使用它,但请记住在compass配置文件中定义的文件夹上设置正确的权限。
将样式表添加到模板中
assetic
{% stylesheets filter="yui_css" "@CypressDemoBundle/Resources/public/compass/stylesheets/screen.css" %} <link href="{{ asset_url }}" type="text/css" rel="stylesheet" /> {% endstylesheets %}
不使用assetic
<link href="{{ asset('bundles/cypressdemo/compass/stylesheets/screen.css') }}" type="text/css" rel="stylesheet" />
享受吧!
完整的配置参考
cypress_compass_elephant: register_listener: true compass_binary_path: "/usr/local/bin/compass" compass_projects: blog: path: %kernel.root_dir%/../src/Cypress/BlogBundle/Resources/public/compass config_file: config.rb auto_init: true target: sass/screen.scss
- register_listener 是否注册编译项目的监听器,如果需要,则在每个请求上。**在生产环境中关闭此功能**,因为您不希望在每次请求上都监控您的scss文件...即使它只需要5-10毫秒(确保在部署期间上传编译后的CSS文件)...
- compass_binary_path用于强制使用不是默认的二进制文件,即“which compass”得到的二进制文件。
- compass_projects是您symfony项目中的所有compass项目的集合(可能有一个用于应用程序)
- config_file是compass的配置文件名称。默认为config.rb,标准文件。您可以使用此设置根据环境编译不同的样式表
- auto_init如果设置为false,将禁用空文件夹上的初始化功能。默认为true
- target告诉CompassElephant编译单个文件,而不是整个compass项目。目标应该是**从compass项目根目录的相对路径**
命令行
有一个简单的命令可以编译所有compass项目。这对于部署程序(capifony)非常有用
例如,在capifony部署中,可以触发此命令
$ ./app/console cypress:compass:compile -e=prod
工作原理
此包注册了一个事件监听器,每次请求都会检查在config_dev.yml文件中定义的项目是否处于“干净”状态或需要重新编译。
如果项目不需要重新编译,它会给symfony增加一个非常小的开销。
阅读CompassElephant的readme文件获取其他有用的信息。