我在 VS 2013(更新 1)中安装了一个全新的 MVC 5.1 Web 应用程序项目,其中安装了 Web Essential 2013(截至今天的最新版本)。构建项目后,Web Essentials 会扫描 javascript 文件并将消息发布到输出窗口以查找它发现的任何问题。对于一个全新的 MVC 5.1 项目,它会生成超过 11,000 条消息 - 不是很有用。
我尝试了两种方法来让它忽略默认情况下包含在新 MVC 5 项目中的有问题的 javascript 文件:
这些方法都没有对生成的 JSCS 消息产生任何影响。我做错了什么,或者这是 Web Essentials 的问题吗?
最佳答案
更新 4:
最新的 Web Essentials 2013 1.9 具有“更好地忽略 lint 运行程序的逻辑”,所有问题都已清除。您现在可以打开“在构建时运行”。它对通用 js 库和缩小的 js 具有默认忽略规则。以下excludeFiles
config 仍然有效,但不再需要。
更新 3:
交叉我的帖子 https://github.com/madskristensen/WebEssentials2013/issues/603 .
如果不需要 JSHint 和 JSCS 的功能,只需转到“工具 - 选项 - Web Essentials - JavaScript”,将“构建时运行”和“保存时运行”设置为 False。
如果您希望使用它们,请将“Run on build”设置为 False,将“Run on save”设置为 True。在预览、打开和保存时,所有 js 都将是 JSHint 和 JSCS。通过此更改,您可以在不减速的情况下成功构建。错误列表只会填充当前打开的 js 的 JSHint 和 JSCS 项。
默认设置下,JSHint 不会在所有缩小的和一些常见的 js 库上运行,但 JSCS 将始终运行。虽然使用 JSCS,但它可能会使用缩小的 js 延迟您大约 serval 秒。如果您不想等待,请转到“Web Essentials - 编辑全局 JSCS 设置”。改变
"excludeFiles": ["test/data/*.js"],
进入
"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],
仅在缩小的 js 上跳过 JSCS。或更改为
"excludeFiles": ["**"],
要完全停止 JSCS,只保持 JSHint 运行。
当然,您可以编写自己的规则来排除不需要的规则。只需在开头放双星,使用'/'代替'\',其他部分只需使用单星作为通配符。赞
"**/Scripts/*.js"
.使用 exclude 规则,它仍然会为每个 js 生成一个 xml 信息项,稍后会修复(希望),但最后您可以开始编码。
最后,您可以升级到 1.8.5,但它只会停止运行“Run on build”。 “保存时运行”仍然需要这些设置。所以它不会改变我在这里所说的。
希望这些信息是正确且有用的,当前版本为 1.8 和 1.8.5。
更新 1:
安装新版本 1.8.5。它将停止“在构建时运行”功能。这意味着即使你打开它,它也不会在构建时运行。但是“在保存为真时运行”仍将在预览、打开和保存时实际运行。 excludeFiles 的正确相对模式是
**/Script/**
.因此,缩小 js 的推荐排除规则将是:
"excludeFiles": ["**/Scripts/**.min.js", "**/Scripts/**.debug.js", "**/Scripts/**.intellisense.js", "**/Scripts/**-vsdoc.js"],
或者直接使用
**/Script/**
将它们全部排除在外。<?xml
根据 JSHint/JSCS Errors on .min files and others?,问题将在下一个版本中修复.所以这个模式应该是最后一个正确的模式,有一个问题应该并且将在下一个 Web Essentials 版本中修复。或者也许接下来我们会提供一个很好的默认 excludeFiles 规则。更新 2:
一个更好的:
"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],
排除所有缩小的 js,无论它在哪里。
我发现的简单方法是转到“工具 - 选项 - Web Essentials - JavaScript”,将“构建/保存时运行”设置为 False。
另一种方法是转到“Web Essentials - 编辑全局 JSCS 设置”,设置 excludeFiles。
但是多个 excludeFiles 是错误的语法。应该使用 ["a", "b"] 语法。
并且应该使用绝对路径,(在全局设置时?)与路径分隔符 '/','\' 是不允许的。
子目录没有用,您应该指定每个路径。
所以像这样的有效设置:
"excludeFiles": ["C:/Solution/Project/Scripts/*", "C:/Solution/Project/Scripts/kendo/*"]
但是这种方式会为每个 js 文件生成另一个构建错误:
JSCS parse error: <?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
</checkstyle>
以及每个 js 文件的信息项:
<?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
</checkstyle>
我不知道如何避免它。所以也许最好的方法只是第一个简单的方法。
关于web-essentials - 如何配置 Web Essentials 2013 以忽略文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499526/