【问题标题】:How can I configure Web Essentials 2013 to ignore files?如何将 Web Essentials 2013 配置为忽略文件?
【发布时间】:2014-02-01 14:52:37
【问题描述】:

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

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

  1. 使用 Web Essentials > 编辑全局 JSCS 设置命令打开我的用户配置文件目录中的 .jscs.json 文件。然后将 "excludeFiles" 属性修改为 ["test/data/.js", "Scripts/jquery.js"]。

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

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

【问题讨论】:

  • 这里有同样的问题,除了我也有 Kendo 和 Angular 所以得到 175k 错误。在 excludeFiles 中尝试了 *.js ,但这似乎没有任何作用。真正减慢构建/F5 的速度
  • 我已停用 jshint 和 jscs 以便能够编译。工具 -> 选项 -> Web Essentials -> Javascript。将 Run on Build 和 Run on Save 设置为 false。

标签: web-essentials jscs


【解决方案1】:

更新 4:

最新的 Web Essentials 2013 1.9 具有“更好地忽略 lint 运行器的逻辑”,所有问题都已清除。您现在可以打开“在构建时运行”。它具有通用 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/** 将它们全部排除。

<?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”,将 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>

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

【讨论】:

  • 我已将其报告给 JSCS github.com/mdevils/node-jscs/issues/232 和 Web Essentials github.com/madskristensen/WebEssentials2013/issues/603,JSCS 家伙说它应该是相对路径...我已经测试将 .jscs.json 放在项目根文件夹中,仍然没有运气。
  • vswebessentials.com/changelog 有新版本 1.8.5 - 2014 年 2 月 6 日: * 性能修复 * 构建时禁用 JS linting * 导致 node.exe 疯狂运行。但问题依然存在。
  • "...最好的方法就是第一个简单的方法",作者 ChrisTorng
  • 我只是不认为这是答案。我正在使用最新的 Web Essentials;我在有很多文件夹的网站上工作,其中一些我从未接触过(想想 Umbraco、Drupal、WordPress)。我没有弄乱任何 Web Essentials 配置,据我所知,要么 Web Essentials 很慢,要么默认配置不够好,还需要自定义。
【解决方案2】:

安装 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/*"] 替换为您要排除的任何内容。对我来说就像一个魅力。

【讨论】:

  • 谢谢,尼古拉。你必须重新启动VS吗?我做了同样的改变,但没有立即采取。我稍后在一个新的 VS 会话中加载了解决方案,它似乎启动了。
  • 我确实重新启动了 VS 作为一种习惯:) 我不确定它是否需要。如果它对你有用,你能投票给我的答案吗?;)
【解决方案3】:

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

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

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

无需重新启动 Visual Studio。

【讨论】:

    【解决方案4】:

    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 特定的配置格式来做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-13
      • 2013-10-13
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多