abm / sassphp
PHP 对 libsass 的绑定 - PHP 中的快速原生 Sass 解析!
Requires
- php: >=5.4.2
Requires (Dev)
- phpunit/phpcov: ^3.1
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ~1.0
Replaces
- abm/sassphp: 0.7
This package is auto-updated.
Last update: 2024-09-21 15:13:34 UTC
README
PHP 的 sass
扩展为您提供了在 PHP 应用程序中解析 Sass 的面向对象系统。底层使用 libsass 提供快速且兼容的 Sass 解析。
什么是 Sass?
Sass 是一种 CSS 预处理器语言,它为 CSS 添加了令人兴奋、新颖、出色的功能。Sass 是这一类语言中的第一种语言,也是迄今为止最成熟和最新的代码库。
Sass 最初由 Hampton Catlin (@hcatlin) 创建。该语言的扩展和持续发展都是 Natalie Weizenbaum (@nex3) 和 Chris Eppstein (@chriseppstein) 多年工作的结果。
有关 Sass 自身的更多信息,请访问 https://sass-lang.cn
安装
目前,安装该扩展的唯一方式是手动
$ git clone git://github.com/absalomedia/sassphp
请记住获取您的子模块
$ git submodule init
$ git submodule update
同时请记住,libsass 现在也使用自己的子模块,因此也需要更新这些。
...然后编译它!我已经编写了一个小 PHP 脚本来执行您需要执行的所有操作
$ php install.php
运行测试
$ make test
最后,您可以使用 make
进行安装
$ make install
然后将它添加到您的 php.ini
extension=sass.so
请始终记得在 PHP 中启用它
phpenmod sass
二进制安装/部署
只要您有最终的 'sass.so' 扩展文件,就可以在任何服务器上部署 SASS PHP。当然也有一些注意事项。开发环境和生产服务器必须运行相同版本的 PHP。然后,将开发环境中的 /usr/lib/php/ 目录下显示的已安装 'sass.so' 复制到生产服务器上的同一目录。
像往常一样,请确保您将扩展添加到您生产环境中的 php.ini
extension=sass.so
请始终记得在 PHP 中启用它
phpenmod sass
使用方法
此扩展具有非常简单的 API
$sass = new Sass();
$css = $sass->compile($source);
您可以使用 compileFile()
编译文件
$sass = new Sass();
$css = $sass->compileFile($source);
您可以设置库的包含路径
$sass = new Sass();
$sass->setIncludePath('/tmp');
$css = $sass->compile($source);
您可以设置 SASS 文件的样式以适应您的需求
$sass = new Sass();
$sass->setStyle(Sass::STYLE_NESTED);
$sass = new Sass();
$sass->setStyle(Sass::STYLE_EXPANDED);
$sass = new Sass();
$sass->setStyle(Sass::STYLE_COMPACT);
$sass = new Sass();
$sass->setStyle(Sass::STYLE_COMPRESSED);
随着 Libsass 库的成熟,接近 100% 的 SASS 覆盖率,因此此扩展也趋于成熟
- 当指定源映射文件时,SASS 文件编译是一个数组
- 定义源注释的能力
- 将源映射嵌入到 CSS 输出的能力
- 指定 .SASS 文件输入而不是 .SCSS 的能力
- 设置源映射路径的能力,当生成专用的 .map 文件时是必需的
- 为源映射本身定义根目录的能力
- SASS 导入器和函数功能
- 支持 PHP 7.0 到 PHP 7.4,并对 PHP 8 进行了测试
当创建源映射文件时,compileFile()
的输出是一个数组,允许在同一个函数调用中生成编译后的 SASS 文件和 .map 文件。
由于生成源注释有多种方式,现在有了PHP级别的设置来控制输出。
为了在文件内生成源注释
$sass = new Sass();
$sass->setComments(true);
$css = $sass->compileFile($source);
别名也存在,所以你还可以使用
$css = $sass->compile_file($source);
你可以告诉编译器使用缩进语法(SASS语法)。默认情况下它期望SCSS语法
$sass = new Sass();
$sass->setIndent(true); //TRUE -> SASS, FALSE -> SCSS
$css = $sass->compile($source);
你可以告诉编译器将源映射嵌入到实际的CSS文件中
$sass = new Sass();
$sass->setEmbed(true);
$css = $sass->compile($source);
你可以设置库使用的源映射文件
$sass = new Sass();
$sass->setMapPath('/random.output.css.map');
$css = $sass->compileFile($source);
这需要在获取映射文件输出之前完成。目前,SASS文件编译的输出和SASS源映射文件生成序列都是字符串。
第一个数组项始终是编译后的SASS文件:$css[0]
第二个数组项始终是源映射输出:$css[1]
你可以这样设置生成的源映射文件的根目录
$sass = new Sass();
$sass->setMapRoot('/some/dir');
$sass->setMapPath('/random.output.css.map');
$css = $sass->compileFile($source);
如果有问题,扩展将抛出SassException
$sass = new Sass();
try
{
$css = $sass->compile('dayrui3dui36di37');
}
catch (SassException $e)
{
// $e->getMessage() - ERROR -- , line 1: invalid top-level expression
$css = FALSE;
}
变体构建
这些扩展也利用了Libsass库,并且处于不同的完成状态