WebEssentials套件加持之下,Visual Studio 2013可以直接編修SCSS,每次存檔自動編譯出css、min.css及.map,非常方便。但初心者如我,寫錯語法在所難免,一旦造成SCSS無法編譯,Output視窗只會看到somethine went wrong、compilation failed: The service failed to response to this request等含糊訊息,右方預覽視窗則停留在前次成功編譯的結果,連怎麼死的都不知道,令人氣餒。

面對這種情境,我之前用的笨笨解法,是按Ctrl-Z取消所有修改,還原到上次成功編譯的狀態,再一點一點把修改加回去,直到加入某段指令出錯抓出凶手。笨歸笨,但挺管用,每次總能化險為夷。

但老人家耐性有限,這種愚公移山的把戲玩多了令人抓狂,有誘發心血管疾病的風險。心想,應該有更簡便的解決方案吧!經過一番研究,找到一招-將Web Essentials / SASS / Use Ruby Runtime 改為 True(預設為False):

VS2013就會顯示詳細的SCSS編譯錯誤訊息囉!而且Error List還會列出SCSS錯誤項目,點兩下會自動跳到錯誤所在位置,享受與C#、TypeScript同等級的上流開體驗。

故事結束了嗎?不,裡面有個大哉問!WebEssentials預設將Use Ruby Runtime設定False肯定有原因,通常也意味啟用得付點代價。經過一番爬文,找到解答:

WebEssentials自2.5.2版起,預設改用node-sass(使用Node.js整合libsass,一套用C/C++寫的Sass編譯器),主要基於C寫的libsass在效能上狂電用Ruby寫的官方版Sass編譯器,若每次SCSS存檔都需要即時編譯,改用libsass能節省可觀時間,換成libsass的理由充分。但libsass對Sass語法的支援度不如Ruby版編譯器完整,故WE仍保留「User Ruby Runtime」選項解決相容問題。搞懂這點,我也才恍然大悟:之前升級Visual Studio 2013 Update 4時,為何修改該選項能解決無法編譯問題。而我主機上的選項切回False,應該是後來WE更新解決無編譯問題,後來再遇到其他問題時又切換的。

由以上觀察,可以知libsass除了Sass規格支援問題外,與VS2013整合也不如Ruby版密切,出錯時無法顯示詳細錯誤訊息。但基於libsass效能上的絕對優勢,我想最平時應該還是保持Use Ruby Runtime選項為False,特別需要偵錯時再切為True,才是上策。另一個解法是可以使用Koala等Sass編譯程式輔助,顯示詳細訊息,也是可考慮的做法。

http://blog.darkthread.net/post-2015-02-05-display-scss-compilation-error-msg-in-vs2013.aspx

在Visual Studio 2013顯示SCSS詳細錯誤訊息的更多相关文章

  1. 开启Visual Studio 2013时,出现Microsoft.VisualStudio.Web.PasteJson.JsonPackage无法载入的可能解決方案

    1.先下载:http://www.jb51.net/dll/Microsoft.VisualStudio.Web.PasteJson.dll.html Microsoft.VisualStudio.W ...

  2. Visual Studio 2013 Update 2 RTM 发布

    今天,微软再Visual Studio Blog发布了开放Visual Studio 2013 Update 2 RTM 下载的文章. 原来安装RC版本的同志们可以直接安装,提供在线安装和ISO下载安 ...

  3. Visual Studio 2013 的 Xamarin 安装教程

    Xamarin 配置手册和离线包下载  http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安 ...

  4. 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目

    注:本文是“在 Visual Studio 2013 中创建 ASP.NET Web 项目”专题的一部分,详情参见 专题导航 . 预备知识 本专题适用于 Visual Studio 2013 及以上版 ...

  5. 在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤

    Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安装 ...

  6. Visual Studio 2013 Update 2 and with Update 2

    Microsoft 的开发工具 Visual Studio 2013 迎来 Update2 更新.本次更新将为普通开发者带来更多全新功能.修复之前旧版 Bugs.提升性能以及稳定性.之前已经安装 VS ...

  7. 使用Visual Studio 2013编写可维护的本地可视化(natvis)

    在Visual Studio 2012中,我们介绍了创建可视化使用原生类型的能力natvis文件. Visual Studio 2013中包含了一些改进,使其更容易编写可视化的类,在内部利用收集来存储 ...

  8. Visual Studio 2013中的新项目对话框

    在Visual Studio 2013,我们推出了添加新的项目对话框. 此对话框取代了是曾在2012年这个的对话框作品,所有ASP.NET项目(MVC,Web窗体和Web API). 这就是我们如何提 ...

  9. 使用Visual Studio 2013进行单元测试的过程与感想

    首先是安装Visual Studio 2013这个软件,尽管安装过程不复杂,但是安装的时间实在是太长了,经过2个多小时的安装终于装完了. 由于时间紧凑,没来得及装语言包,于是,我用了原装的进行了单元测 ...

随机推荐

  1. .net 中两个日期算经过的月份数

    DateTime startDate = DateTime.Parse("2014-11-1"); DateTime endDate = DateTime.Parse(" ...

  2. FIREDAC用于LINUX报头文件FireDAC.VCLUI.Wait找不到

    FIREDAC用于LINUX报头文件FireDAC.VCLUI.Wait找不到 FIREDAC LINUX下面,此控件 此属性 必须设为CONSOLE.  默认值只能用于WINDOWS操作系统.

  3. Android网络通信框架LiteHttp2.0 开篇简介和大纲目录

    本帖最后由 移动天宇 于 2015-10-26 10:42 编辑 LiteHttp2.0很多东东焕然一新,旧的能力也得到增强,没有使用的同学来了解一下吧. Android网络框架为什么可以选用lite ...

  4. 拍拍CPS入门使用

    1.新建应用,获取应用相应的appOAuthID.appOAuthKey.accessToken(这个一点击获取就会改变的,而且最长有效期为3个月,失效了需要重新获取) http://fuwu.pai ...

  5. Spring WebSocket入门(一) 转载

    本文转载自:http://www.jianshu.com/p/60799f1356c5 WebSocket是html5带来的一项重大的特性,使得浏览器与服务端之间真正长连接交互成为了可能,这篇文章会带 ...

  6. ylbtech-LanguageSamples-Versioning(版本控制)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Versioning(版本控制) 1.A,示例(Sample) 返回顶部 “版本控制”示 ...

  7. 用于OpenRISC的Makefile示例

    #* #*********************************************************************************************** ...

  8. (转)Android技术积累:图片缓存管理

    如果每次加载同一张图片都要从网络获取,那代价实在太大了.所以同一张图片只要从网络获取一次就够了,然后在本地缓存起来,之后加载同一张图片时就从缓存中加载就可以了.从内存缓存读取图片是最快的,但是因为内存 ...

  9. jstl中取map,其中map的key是一个对象,value是一个list

    <c:forEach items="${map }" var="item"> //取得key中的属性 ${item.key.name } <c ...

  10. [Tools] Unlock TypeScript's Features in Vanilla JS with @ts-check and JSDoc

    TypeScript can help you with your plain JavaScript files if you add a simple //@ts-check comment. Th ...