notrix / 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
This package is not auto-updated.
Last update: 2024-09-29 05:41:48 UTC
README
一个用于在 Symfony2 项目中使用 CompassElephant 库的 Bundle
此 Bundle 在每次请求时扫描您的 compass 项目,并检查是否需要重新编译。它处理依赖关系,因此您可以使用 compass 的 @import、精灵生成 等功能而不会出现问题。让 Symfony 监控 您的项目并忘掉它。
注意
此 Bundle 的版本 >= 0.1 不再使用本机检查器,因为 compass 从 1.x 版本开始不再支持。
staleness_checker 选项仍然可用于兼容性,但它被忽略。
安装
composer
使用 composer 在您的 symfony 项目根目录下输入即可安装
$ 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(); }
配置
在您的配置文件中添加配置(针对 dev 环境)
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 默认设置,则所有内容都将位于同一项目文件夹中。您可以给所有文件授权。但您也可以将样式表文件夹的位置更改为项目外。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
工作原理
此 Bundle 注册一个事件监听器,在每次请求时检查在 config_dev.yml 文件中定义的项目是否处于 "清洁" 状态或需要重新编译。
如果项目不需要重新编译,它会给symfony增加一个非常小的开销。
阅读CompassElephant 的 README 以获取其他有用的信息。