使用PHP为Bootstrap3编译更少的CSS

使用PHP为Bootstrap3编译更少的CSS,php,less,twitter-bootstrap-3,lessphp,less.php,Php,Less,Twitter Bootstrap 3,Lessphp,Less.php,据我所知,PHP中有两个LessCSS编译器: 两者都声称与Bootstrap(版本3)兼容。然而,考虑到这三个方面的陡峭学习曲线,我正在努力让一切顺利进行。简而言之,我只想实现以下目标: 在PHP中一起编译多个.less文件: bootstrap.less my.less 在leafo.net/lesshp中编译单个文件很容易,我发现: require_once 'lessc.inc.php'; $less = new lessc; $less->checkedCompile(

据我所知,PHP中有两个LessCSS编译器:

两者都声称与Bootstrap(版本3)兼容。然而,考虑到这三个方面的陡峭学习曲线,我正在努力让一切顺利进行。简而言之,我只想实现以下目标:

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

  • bootstrap.less
  • my.less
  • leafo.net/lesshp
    中编译单个文件很容易,我发现:

    require_once 'lessc.inc.php'; 
    $less = new lessc;
    $less->checkedCompile("my.less", "mainless.css");
    
    但是,我不确定库是否设计用于多个文件。(如果是,怎么做/应该怎么做?)

    我决定转到另一个库,它明确地演示了如何为引导编译:
    lesshp.gpeasy.com
    。然而,他们的示例片段让我挠头(摘自):


    老实说,我仍在努力理解让服务器编译更少的文件的好处,而不是在开发过程中编译它们,然后在部署应用程序时将CSS加载到服务器上。这似乎是服务器的额外工作,没有任何优势。我使用了一个名为prepos的工具,它相当于Windows的代码工具包。设置起来很容易。我用更少的时间进行更改并保存。CSS文件会自动重新编译并保存到我的开发机器上的应用程序文件夹中。当一切按我所希望的方式进行时,我缩小文件并将其移植到生产箱

    AFAIK与Boostrap 3>3.0.0不兼容,请参阅

    对我有效我成功地将它用于JBST(),但我没有使用cache函数

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

    和编译样式

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

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

    /mysite/-这是干什么用的

    这是一条正确的道路。如果包含的文件较少,例如
    url(image.png)
    它将输出
    url(/mysite/image.png)
    。注意引导使用../对于GlyphIcon的路径,这不会被纠正,甚至更糟的是变成/mysite/。/。您必须以更少的格式设置此路径:
    @图标字体路径:“/mysite/fonts/”

    /var/www/writable_folder-css是在这里写入的吗

    $compiled=file\u get\u contents('/var/www/writable\u folder/'.$css\u file\u name)之后为Nope
    $compiled
    包含您必须将其写入文件的(已编译)CSS。或者使用:$css\u file\u name=Less\u Cache::Get($to\u Cache);在HTML中:

        <link rel="stylesheet" type="text/css" href="/writable_folder/<?php echo $css_file_name;?>"> 
    
    另一种解决方案使用:

    1:获取.less文件的css代码:

    $baseCSS = file_get_contents("style.less");
    
    $baseCSS .= file_get_contents("default.less");//append the second file to the variable
    
    2:使用以下命令编译:

    $finalCSSCode = $less->compile($baseCSS);
    

    干杯

    除非你需要动态CSS,否则没有优势!在我看来,你的工作流程没有问题,另一方面,我认为你没有回答这个问题。你是对的,这不是答案。动态CSS,这就是将其放在服务器上的原因——允许用户对应用程序或类似的东西进行蒙皮。谢谢你的提问,这让我思考。对我来说,这只是一个偏好问题,我在本地主机WAMP服务器上使用PHP脚本进行各种编译等,包括管理subversion存储库。我认为它比拥有一套独立的工作流工具更具可移植性,同时也充分利用了我对PHP的熟悉程度。也许无PHP编译器的创建者也有其他原因。事实上,这里的缓存将是服务器端的,因此缓存检查仍然会增加用户的开销。它不同于客户端编译。对我来说,在开发过程中,服务器编译代码而不是浏览器将是一种优势。当然,开发后没有理论上的优势,在这种情况下,原始文件更好。“更少的缓存::Get似乎一次只适用于一个文件。”它实际上适用于多个文件。re:
    是的,为什么不?
    。。。因为在我找到的Less_缓存的源代码中有两行:
    foreach($file_path=>$uri_或Less){
    $parser->ParseFile($file_path,$uri_或Less);
    (第112行和第120行)。看起来键和值都是较少的源,而不是较少的源和css目标-让我很困惑您的输入应该是数组(单个文件)还是数组的数组。与
    parseFile()相同
    。我已经更新了示例,希望能让事情更清楚。感谢您发现这个输入错误!另外,您能将其标记为“less.php”吗?ffs,他们必须这样冲突名称吗?很气愤。很抱歉名称冲突。我继承了“less.php”github上其他用户提供的名称/项目。是否有人愿意发布海报要求的片段的真实示例?谢谢!我正在开发Wordpress的定制程序。我这样使用,但它不起作用:
    $theme\u options=array('color\u primary'=>get\u theme\u mod('color\u primary')),'color_secondary'=>get_theme_mod('color_secondary'),'color_success'=>get_theme_mod('color_alert'))$theme_options_data='';foreach($key=>$val){$theme_options_data.=“{$key}:{$val};\n”;$theme_options_data.=file_内容($fileout);$css=$compiler->compile($theme\u options\u data);
        <link rel="stylesheet" type="text/css" href="/writable_folder/<?php echo $css_file_name;?>"> 
    
    $baseCSS = file_get_contents("style.less");
    
    $baseCSS .= file_get_contents("default.less");//append the second file to the variable
    
    $finalCSSCode = $less->compile($baseCSS);