【问题标题】:Dotless failing to compile ; in Bootstrap 3 less sourceDotless 编译失败;在 Bootstrap 3 中更少的源代码
【发布时间】:2013-09-02 22:03:31
【问题描述】:

我使用 dotless 1.3.1.0 编译 less-files。这在 bootstrap 2.x 中运行良好,但在切换到 bootstrap 3.0.0 后(从这里下载源代码:http://getbootstrap.com/getting-started/),我突然收到此错误:

预期为 ')' 但在文件 'mixins.less' 的第 47 行找到了 ' ': [46]: // 大小快捷方式 [47]: .size(@width; @height) { ------------^ [48]:宽度:@width;

似乎有一个 ;作为参数之间的分隔符是无效的。 mixins.less 中的原始源代码如下所示:

...
// Sizing shortcuts
.size(@width; @height) {
  width: @width;
  height: @height;
}
...

我必须使用更新的 less 编译器吗?还是 bootstrap 发布了 buggy less 的源码?

更新 1: 我可以看到,存在 dotless 的拉取请求,解决了问题;

https://github.com/dotless/dotless/pulls "修复了 ; 在 mixin 参数列表中不支持 #319 #320"

我将继续使用 css 文件,直到这个问题在 dotless 中得到修复。

【问题讨论】:

    标签: twitter-bootstrap-3 dotless


    【解决方案1】:

    如果您查看 bootstrap 的 getting started page,您会发现他们声明:

    少编译

    如果下载的是原文件,需要编译Bootstrap的 LESS 文件转换成可用的 CSS。为此,Bootstrap 只是正式的 支持 Recess,Twitter 的基于 less.js 的 CSS 提示。

    虽然没有使用dotless,但我遵循了与您使用lessc类似的路径,然后发现使用recess解决了我的问题。也许你也可以选择使用休息时间?

    例如,我有一个名为 tmpfl.less 的文件,其内容如下:

    @import "mixins.less";
    @import "variables.less";
    
    
    .wrapper {
      .make-row();
    }
    .content-main {
      .make-lg-column(8);
    }
    .content-secondary {
      .make-lg-column(3);
      .make-lg-column-offset(1);
    }
    

    如果我在它上面运行lessc,我会得到以下结果:

    lessc tmpfl.less 
    NameError: .size is undefined in mixins.less:47:0
    46 // Sizing shortcuts
    47 .size(@width; @height) {
    48   width: @width;
    

    现在,我成功使用recess如下:

    recess --compile tmpfl.less > tmpfl.css
    

    更新:

    为了在 .Net 环境中使用 Recess,特别是在 Visual Studio 中,可以关注these instructions 了解安装的详细信息。这些说明提供了概述,但可能遗漏了有关安装 Node.js 的一些细节。 Microsoft 有一些关于它的 brief words,它们链接到 a GitHub project,这可能会有所帮助,具体取决于您的 Visual Studio 版本。

    如果你不走 Node.js-in-Visual Studio 路线,那么真正的主要目标是在某个地方安装 Node.js,然后最终安装 npm,Node.js 的包管理器,这样你就可以安装休会。这可以通过转到the Node.js download 并安装 Windows 版本在 Windows 上实现。安装 npm 在this stackoverflow discussion 中突出显示。安装完成后,只需运行 npm 即可安装 Recess,如下所示:

    npm install recess -g
    

    这也在本次更新的第一个链接中进行了讨论。

    【讨论】:

    • 感谢您抽出宝贵时间回答。我会试一试,寻找一个像 less.net 一样顺利运行的 .net 凹槽框架。有知道的,可以推荐一下吗? :)
    • 我在 Linux 中使用 Node.js,但我更新了我的回复,详细说明了如何在 .Net 环境中运行它。如果这对您有帮助,请务必将其标记为答案。我正在努力提高我的代表。在stackoverflow上。
    • 他们似乎已经从 Bootstrap 页面中删除了该文本,现在是否意味着我们可以在没有 Recess 的情况下编译它,我不知道!
    • 使用 dotless 编译就好了。
    【解决方案2】:

    我已经组装了一个 httphandler,它将使用 lessjs 进行更少的编译。

    与生产质量代码相比,它更像是概念证明,但作为起点,它可能对某些人有用。

    您可以在这里找到来源:

    https://bitbucket.org/martinbooth/clearscriptless

    如果有人有兴趣尝试使用侏罗纪来做到这一点,你可以在这里找到我的尝试:

    https://bitbucket.org/martinbooth/jurassicless

    我不推荐侏罗纪,因为

    • 它需要对库进行一些当前没有的错误修复 集成到主项目中 我的更改现在在 Jurassic 的主分支中,所以这不再是问题(尽管最新版本目前不包括它们)
    • 它非常慢,因此 我尝试 clearscript 的原因

    【讨论】:

      【解决方案3】:

      我的一位使用 dotless 的同事对 Bootstrap 3 合并问题进行了一些修复。 Apparently Bootstrap3 现在将使用最新代码进行编译:)

      https://github.com/dotless/dotless/commits/master

      我预计更新的 NuGet 包将很快推出(基于 this tweet

      【讨论】:

      • 看起来不错,但似乎不适用于 dotless.Compiler 可执行文件。在现场观看 LESS 文件的更改时,它仍然令人窒息。 :(
      • 将此归咎于愚蠢......页面上的“下载 DLL”链接正在下推 1.3.1,而不是 1.4.1。为了获得它,您必须获取最后一个签入的 zip,然后在 Visual Studio 中构建。中提琴。其他有用的东西是我们的下一步:tedgustaf.com/blog/2010/11/setup-dotless-in-aspnet-project - 说明将构建器放入项目构建过程的方法。
      【解决方案4】:

      在我自己花了几个小时让它工作之后,我发现 dotless 在这个时候是毫无用处的。

      但在这里你可以在你的 mvc ASP.Net 项目中实现 Less 和 Bootstrap 3 Less

      http://www.tomdupont.net/2013/10/bootstrap-3-less-bundling-and-aspnet-mvc.html?showComment=1386250367416#c1439130135847828203

      这个人刚刚在我的书中赢得了一次互联网,如果你能帮我找到他的堆栈交换帐户,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-06
        • 2017-05-31
        • 1970-01-01
        • 2015-11-04
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多