1

我希望在我的 CakePHP 应用程序中实现 SASS ( http://sass-lang.org )。但我不想通过 Ruby 使用命令行编译它,而是让它在应用程序处于调试模式时自动将 SASS 文件转换为 CSS。

我过去用 LESS 做过这个。有没有人在 CakePHP 中为 SASS 做过类似的事情?

我如何看待它的一个示例(基于我的 LESS 实现的工作方式):

if (Configure::read('debug') > 0)
{
    // import sass compiler
    App::import('Vendor', 'vendorName');

    $sass_directory = ROOT . DS . APP_DIR . DS . 'webroot' . DS . 'sass' . DS;

    $css_directory = ROOT . DS . APP_DIR . DS . 'webroot' . DS . 'css' . DS;

    vendorName::toCss($sass_directory, $css_directory);
}

所以它会读取 SASS 目录下的所有文件,然后将其编译成 CSS 并放在 CSS 目录中。

根据 PHamlP 文档:https ://code.google.com/p/phamlp/wiki/SassOptions这个插件可以转换和移动整个目录。任何人都能够确认这符合我的想法吗?

我已经在一个独立的 PHP 文件上对其进行了测试:

require_once('Vendor/PHamlP_3.2/sass/SassParser.php');

$sass = new SassParser(array('style'=>'nested','template_location'=>'./sass','css_location'=>'./css'));

$css = $sass->toCss('./sass/master.scss');

echo $css;

哪个有效...但是,如果我必须告诉它 SASS 文件所在的位置(并且只能选择一个),那么我为什么还要在选项中声明 SASS 位置和 CSS 位置,然后它实际上并没有对CSS 文件...

有人可以提供一些想法,说明如何让它自动从 template_directory 获取 SASS 文件,然后将其保存在编译的 CSS 目录中吗?

我注意到 PHamlP 有一个 CakePHP 下载:https ://code.google.com/p/phamlp/downloads/list但它很旧,似乎想通过解析器运行实际引用的 SASS 文件,而不是仅仅编译它们并引用创建的 CSS 文件。除非我错了?CakePHP 版本只引用 CSS 文件,使用 SASS 文件构建它们。

更新:我试过 PHamlP,它只适用于 .sass 而不是 .scss!似乎也只能通过过滤器运行单个文件,而不是转换整个文件夹,例如说我正在使用 Compass 并希望将其全部编译成一个文件等。

4

1 回答 1

1

我现在没有时间写一个完整的答案(带有代码示例等......)但你可能想看看scssphp它似乎有能力获取整个目录并处理它,看起来也能够仅重新编译更改的文件。

作为旁注,如果它是在您正在寻找的开发模式下的自动重新编译,SASS 有一个--watch参数可以自动重新编译 SCSS 文件,而compass有一个watch命令,除了为您带来大量的 mixin 之外,它还会执行相同的操作可以在您的 SCSS 中使用。

于 2013-09-16T17:21:16.803 回答