使用PHP为Bootstrap 3编译更少的CSS

  发布于 2023-02-06 17:26

我知道PHP中有两个LessCSS编译器:

http://leafo.net/lessphp/

http://lessphp.gpeasy.com/

两者都声称与Bootstrap(版本3)兼容.然而,考虑到这三个方面的陡峭学习曲线,我正在努力获得任何进展.简而言之,我只想实现以下目标:

在PHP中一起编译多个.less文件:

    bootstrap.less

    my.less

编译单个文件leafo.net/lessphp很简单,我发现:

require_once 'lessc.inc.php'; 
$less = new lessc;
$less->checkedCompile("my.less", "mainless.css");

但是我不确定该库是否适用于多个文件.(如果是这样,怎么可能/应该怎么做?)

我决定转到另一个库,它明确地演示了如何编译bootstrap : lessphp.gpeasy.com. 然而他们的示例片段让我挠头(从这里开始):

 '/mysite/' );
Less_Cache::$cache_dir = '/var/www/writable_folder';
$css_file_name = Less_Cache::Get( $to_cache );
$compiled = file_get_contents( '/var/www/writable_folder/'.$css_file_name );

看着他们的其他例子之后,我意识到,$files$to_cache是一个错字:他们的意思是相同的变量.但在阅读文档并查看源代码后,我放弃了尝试解决以下字符串是否准确传达其目的:

    /var/www/mysite/bootstrap.less - 这是少编译的文件吗?

    /mysite/ - 这个是来做什么的??

    /var/www/writable_folder - 这是写入css的地方吗?

请有人给我一个可以使用PHP 编译bootstrap.lessmy.less进入css文件的片段吗?

1 个回答
  • AFAIK http://leafo.net/lessphp/与Boostrap 3> 3.0.0不兼容,请参阅https://github.com/leafo/lessphp/issues/503

    http://lessphp.gpeasy.com/为我工作我已经成功地将它用于JBST(https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/82)我没有使用缓存功能.

    如果没有缓存,您可以调用$parser->parseFile()包含的每个文件,它将编译为一个文件.array(/var/www/mysite/bootstrap.less' => '/mysite/');.对多个文件使用数组数组:array(array(/var/www/mysite/bootstrap.less' => '/mysite/'), array(/var/www/mysite/.less' => '/mysite/'));

    <?php
    $parser = new Less_Parser();
    $parser->parseFile( '/var/www/mysite/bootstrap.less', 'http://example.com/mysite/' );
    $parser->parseFile( '/var/www/mysite/mainless.css', 'http://example.com/mysite/' );
    $css = $parser->getCss();
    

    Less_Cache :: Get似乎一次只能用于一个文件.

    更新由@ user697576评论Less_Cache::Get()接受单个文件或列表(文件数组).单个文件就像数组一样array(/var/www/mysite/bootstrap.less' => '/mysite/');

    来自文档:

    使用Less_Cache类来保存和重用已编译的less文件的结果.此方法我们检查每个较少文件(包括导入文件)的修改时间,并在找到更改时重新生成.

    我强调包括导入的文件,因为这似乎解决了你的问题.将文件合并为LESS:

    styles.less:

    @import "my.less"; 
    @import "mainless.css";
    

    并且只编译样式.

    /var/www/mysite/bootstrap.less - 这是要编译的文件少吗?

    是的,为什么不?确保在bootstrap.less中导入的文件与bootstrap.less位于同一目录中,或者用于$parser->SetImportDirs()设置正确的路径.

    / mysite/ - 这是为了什么?

    它设置了正确的道路.如果你的LESS文件包含例如url(image.png)它输出url( /mysite/image.png).注意Bootstrap使用../作为glyphicons的路径,这将不会被纠正,甚至更糟糕的变成/mysite/../.您必须在LESS中设置此路径:@icon-font-path: "/mysite/fonts/";

    / var/www/writable_folder - 这是写入css的地方吗?

    $compiled = file_get_contents( '/var/www/writable_folder/'.$css_file_name ); $compiled包含(编译好的)CSS后你必须将它写入文件.或者使用:$ css_file_name = Less_Cache :: Get($ to_cache); 在您的HTML中:

        <link rel="stylesheet" type="text/css" href="/writable_folder/<?php echo $css_file_name;?>"> 
    

    更新 请注意,自Bootstrap 3.2.0起.Bootstrap中属性的前缀由构建过程中的autoprefixer完成.前面的含义是Bootstrap Less代码包含属性声明,只有在使用前缀时才使用W3C语法才能支持跨浏览器.使用less.php编译源代码不会运行autoprefixer.另见:https://github.com/oyejorge/less.php/issues/158

    2023-02-06 17:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有