【问题标题】:How do I compile the Bootstrap-3.0.0-wip less folder to .css with Visual Studio and Web Essentials 2012?如何使用 Visual Studio 和 Web Essentials 2012 将 Bootstrap-3.0.0-wip less 文件夹编译为 .css?
【发布时间】:2013-04-23 17:13:21
【问题描述】:

如何编译包含在 Visual Studio 2012 MVC Web 项目中的 .less 文件(例如 Bootstrap-3.0.0-wip)文件夹?

我可以使用外部工具将 .less 编译为 .css,但不清楚如何将 .less 文件编译为 .css 作为使用最新 Visual Studio 构建的一部分。 (尽管当前 VS 插件提供了 .less 的兼容性*)我可以在预览窗口中看到 .less 文件的编译输出,但我不知道如何保存输出或在运行项目时自动编译它。

*VS 2012.2 更新、Microsoft Web 开发者工具和 Web Essentials 2012

【问题讨论】:

    标签: visual-studio twitter-bootstrap visual-studio-2012 less


    【解决方案1】:

    要使用 Visual Studio 2012 + Web Essentials 2012 编译 Bootstrap .less 文件的文件夹,您必须稍作调整,因为 Web Essentials 无法按照 github 上的格式编译 bootstrap less 文件夹。

    bootstrap-3.0.0-wip folder 添加到 Visual Studio Web 项目。 (我的项目恰好是一个 ASP.Net MVC 4 Empty 项目,不过应该没关系。)

    将 bootstrap.less 文件(所有项目 less 文件的入口点)上移一个文件夹,将所有其他文件留在 \less 文件夹中。

    应该是这样的:

    bootstrap.less
    less\[all other less files].less 
    

    接下来,编辑 bootstrap.less 文件,为所有 @import 语句添加“less\”文件夹前缀,如下所示:

    // Core variables and mixins
    @import "less\variables.less";
    @import "less\mixins.less";
    
    // ...etc until all of the import statements include less\ at the start
    

    现在,保存项目。除非您仍然有编译错误,否则移动的 bootstrap.less 文件应该已经编译成 bootstrap.css 和 bootstrap.min.css 文件。 (详见错误列表)

    剩余的 .less 文件将无法编译,因为它们仍然存在错误(单个文件上没有 @import 语句),但是这并不重要,因为您已经编译了重要的文件。


    如果您将 Bootstrap3.0.0-wip 源代码集成到 ASP.MVC 4 项目中,您可以利用 MVC 4 的捆绑功能来编译 JS 文件。

    假设您将 Bootstrap 源代码放入项目 /Content/bootstrap 的文件夹中,请将以下内容添加到您的 App_Start\BundleConfig.cs 文件中:

    // Bootstrap 3 script bundle
    bundles.Add(new ScriptBundle("~/bundle/scripts/bootstrap_js").Include(
                "~/Content/bootstrap/js/bootstrap-transition.js",
                "~/Content/bootstrap/js/bootstrap-alert.js",
                "~/Content/bootstrap/js/bootstrap-button.js",
                "~/Content/bootstrap/js/bootstrap-carousel.js",
                "~/Content/bootstrap/js/bootstrap-collapse.js",
                "~/Content/bootstrap/js/bootstrap-dropdown.js",
                "~/Content/bootstrap/js/bootstrap-modal.js",
                "~/Content/bootstrap/js/bootstrap-tooltip.js",
                "~/Content/bootstrap/js/bootstrap-popover.js",
                "~/Content/bootstrap/js/bootstrap-scrollspy.js",
                "~/Content/bootstrap/js/bootstrap-tab.js",
                "~/Content/bootstrap/js/bootstrap-typeahead.js",
                "~/Content/bootstrap/js/bootstrap-affix.js"));
    

    (注意:这些js文件的顺序是从项目自带的Makefile中获取的)

    【讨论】:

      【解决方案2】:

      如何使用 Web Essentials 2012 将 .less 编译为 .css

      要使用 VS 2012 + Web Essentials 2012 编译 .less 文件,您的 .less 文件必须没有错误。每个需要导入或混合的 .less 文件都必须指定它。突出显示您的 .less 文件并在预览窗格中预览输出。如果指定了错误,则无法编译为 .css。

      它还有助于设置 Web Essentials 选项以在构建时编译 .less 文件。

      Tools > Options > Web Essentials > LESS > Compile On Build = TRUE
      

      您也可以通过以下设置将其编译为“css”文件夹。

      Tools > Options > Web Essentials > LESS > Compile to 'css' folder = TRUE
      

      此设置在 LESS 目录中创建一个 CSS 文件夹,它为在构建过程中编译的每个 .less 文件放置一个 [filename].css 和 [filename].min.css 文件。


      为什么 Bootstrap-3.0.0-wip .less 文件夹不能与 Web Essentials 2012 (+ VS 2012) 一起编译

      a) 如果在构建 .less 文件时出现任何错误,它将不会编译为 .css 文件。

      b) Web Essentials 2012 (+VS 2012) 似乎还不能识别文件夹中的多个 .less 文件,这些文件全部由单个入口点文件导入,例如 Bootstrap 3.0-wip 中的 bootstrap.less 文件 (除非每个文件都列出其所需的导入)。这可能是因为还没有办法指定入口点文件。因此,大多数 Bootstrap .less 文件都无法编译,因为它们没有定义变量和 mixin。 (因为 mixins.less 和 variables.less 文件都被导入到各个文件中)并且由于它们无法编译,因此 .less -> .css 编译过程会静默失败。

      c) 编译相互依赖的 .less 文件的文件夹的方法(从 Web Essentials 2.7 开始,是按照 bootstrap.less 中列出的顺序将所有文件合并到一个大的 .less 文件中) .

      d) 由于步骤 c 是一个耗时的痛苦,我建议现在使用外部编译器编译 bootstrap 的 less 文件。至少在 Web Essentials 允许您设置入口点并按所需顺序编译依赖 .less 文件的文件夹之前。

      【讨论】:

        【解决方案3】:

        基于 Web Essentials 的 changelog,我认为这已在 2013 年 7 月 31 日修复(“已修复 LESS 相对 @import 问题”)。我刚刚在一个 MVC 4 项目中使用 Visual Studio 2012(更新 3)和最新的 Web Essentials 2012 和 Bootstrap 3.0 进行了尝试,它似乎工作正常(具体来说,它是从 bootstrap.less 生成 bootstrap.css)。

        对于任何想要这样做的人,我在安装 Web Essentials 后所做的只是将 .less 文件添加到我的 Css 文件夹,将 boostrap.js 文件添加到我的 Scripts 文件夹,将字体文件添加到我的 Fonts 文件夹( Bootstrap 现在使用字体而不是精灵图像),并在我的主视图中包含了编译好的 bootstrap.css 和 bootstrap.js 文件。请注意,我还右键单击了其中一个 .less 文件以生成解决方案设置(Web Essentials 使用的一些配置文件)。为了得到第一次生成的.css文件,我只是做了一个表面的改变并保存了它。

        【讨论】:

          【解决方案4】:

          现在这变得容易多了,并且只需要很少的操作。首先,我使用的是 VS 2013,但是 VS 2012 的步骤应该相同:

          1. 确保正确安装了 Web Essentials。
          2. TOOLS / Options / Web Essentials / LESS 下,确保 Auto-compiledependent files on saveTrue,并且 保存时编译文件True
          3. 如果您的 Web 应用程序项目当前正在使用预编译的 NuGet 包 Bootstrap,或者如果您手动将 Bootstrap 添加到您的项目中,请将其删除。
          4. 使用 NuGet,将 Bootstrap Less Source 包添加到您的 Web 应用程序项目中。
          5. 将新的 bootstrap.less 文件添加到应用程序的 ~/Content 文件夹 (MVC)。
          6. 删除该文件的全部内容,然后单击 ~/Contents/bootstrap/bootstrap.less 文件并将其拖到该文件中。这将在您的新文件中创建一个 @import "bootstrap/bootstrap"; 条目。
          7. 要将此文件编译为 CSS 文件,您只需保存文件(即按 CTRL-S 或“保存文件”按钮)。
          8. 如果您对文件进行了任何更改,您只需重新保存此文件即可。

          这样做可以让您在有新版本可用时轻松更新 NuGet 包。您可以在 @import 行之后添加任何较少的变量更改。

          尽情享受吧!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-03
            • 2015-07-26
            • 2013-01-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多