26

我在 VS 2013(更新 1)中安装了一个新的 MVC 5.1 Web 应用程序项目,其中安装了 Web Essential 2013(截至今天最新)。构建项目后,Web Essentials 会扫描 javascript 文件并将发现的任何问题发布到输出窗口。对于一个全新的 MVC 5.1 项目,它会生成超过 11,000 条消息 - 并不是真正有用。

我尝试了两种方法让它忽略默认包含在新 MVC 5 项目中的有问题的 javascript 文件:

  1. 使用 Web Essentials > Edit Global JSCS Settings 命令在我的用户配置文件目录中打开 .jscs.json 文件。然后将“excludeFiles”属性修改为[“test/data/ .js”,“Scripts/jquery .js”]。

  2. 在我的 Scripts 文件夹中使用“jquery*.js”创建了一个 .jshintignore 文件。

这些方法都没有对生成的 JSCS 消息产生任何影响。我做错了什么,还是 Web Essentials 的问题?

4

4 回答 4

18

更新 4:

最新的 Web Essentials 2013 1.9 具有“更好地忽略 lint runner 的逻辑”,所有问题都被清除了。您现在可以打开“在构建时运行”。它具有通用 js 库和缩小 js 的默认忽略规则。以下excludeFiles配置仍然有效,但不再需要。

更新 3:

从https://github.com/madskristensen/WebEssentials2013/issues/603交叉我的帖子。

如果你不需要 JSHint 和 JSCS 的功能,只需进入“工具 - 选项 - Web Essentials - JavaScript”,将“Run on build”和“Run on save”设置为 False。

如果您想使用它们,请将“Run on build”设置为 False,将“Run on save”设置为 True。在预览、打开和保存时,所有的 js 都将是 JSHint 和 JSCS。通过此更改,您可以成功构建而不会减慢速度。错误列表只会填充当前打开的 js 的 JSHint 和 JSCS 项。

默认情况下,JSHint 不会在所有缩小的和一些常见的 js 库上运行,但 JSCS 将始终运行。在使用 JSCS 时,它可能会使用缩小的 js 延迟大约几秒钟。如果您不想等待,请转到“Web Essentials - 编辑全局 JSCS 设置”。改变

"excludeFiles": ["test/data/*.js"],

进入

"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],

仅在缩小的 js 上跳过 JSCS。或更改为

"excludeFiles": ["**"],

要完全停止 JSCS,只需要保持 JSHint 运行。

当然,您可以编写自己的规则来排除不需要的规则。只需将双星放在开头,使用'/'而不是'\',其他部分只需使用单星作为通配符。喜欢"**/Scripts/*.js"

使用排除规则,它仍然会为每个 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/**用来排除它们。

根据.min 文件和其他文件上的 JSHint/JSCS 错误,<?xml问题将在下一个版本中得到解决?. 所以这个模式应该是最后一个正确的模式,有一个问题应该并且将会在下一个 Web Essentials 版本中得到解决。或者也许下一个我们会提供一个很好的默认 excludeFiles 规则。


更新 2:

一个更好的:

"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],

排除所有缩小的 js,无论它在哪里。


我发现的简单方法是转到“工具 - 选项 - Web Essentials - JavaScript”,将 Run on Build/Save 设置为 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>

我不知道如何避免它。所以也许最好的方法只是第一种简单的方法。

于 2014-02-06T09:11:11.923 回答
7

安装 KendoUI 后我遇到了同样的问题。项目运行基本上是不可能的。我通过转到 Web Essentials -> Edit global JSCS settings 并添加:

"excludeFiles": ["Scripts/kendo/*"]

"excludeFiles": ["test/data/*.js"]条目下方。

现在 .jscs.json 文件如下所示:

{
"requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
"disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"disallowRightStickedOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireRightStickedOperators": ["!"],
"requireLeftStickedOperators": [","],
"disallowImplicitTypeConversion": ["string"],
"disallowKeywords": ["with"],
"disallowMultipleLineBreaks": true,
"disallowKeywordsOnNewLine": ["else"],
"excludeFiles": ["test/data/*.js"],
"excludeFiles": ["Scripts/kendo/*"]
"validateJSDoc": {
    "checkParamNames": true,
    "requireParamTypes": true
    }
}

只需将 替换为["Scripts/kendo/*"]您要排除的任何内容。对我来说就像一个魅力。  

于 2014-02-05T04:14:19.030 回答
2

.jscsrc中的excludeFiles选项是正确的方法,但您需要将其指定为完整的文件系统路径,而不是项目的相对路径才能使其正常工作。注意前导正斜杠 /而不仅仅是**。您也可以定位更具体的文件夹,但似乎您需要包含/才能使其工作。我怀疑您可以研究节点文件通配文档以真正了解这些选项。

在我的机器上,使用 Web Essentials 2013 for Update 2,以下步骤禁用了所有文件的 JSCS:

  • 选择 Web Essentials 菜单->编辑全局 JSCS 设置 (.jscsrc)...
  • 添加"excludeFiles": ["/**"],并保存设置文件
  • 在问题 JS 文件上手动运行 JSCS 或再次保存它(取决于工具->选项->Web Essentials->JavaScript->Linter->保存时运行选项

无需重新启动 Visual Studio。

于 2014-06-23T02:24:13.347 回答
2

Web Essentials 2013 版本 2.3 添加了处理此问题的新方法:.weignore。请参阅http://vswebessentials.com/features/general#weignorehttps://github.com/madskristensen/WebEssentials2013/pull/1250。新方法比旧方法更好,因为这是管理所有编译器和 linter 的集中且一致的地方。而且它更快,因为旧方法仍然需要通过编译器和 linter 运行每个目标文件,然后被它们忽略。新方法将忽略 Web Essentials 本身,减少运行到编译器和 linter 的时间/CPU/磁盘。并且不需要了解每个编译器和 linter 特定的配置格式来做同样的事情。

于 2014-09-01T04:51:57.270 回答