web-essentials - 如何配置 Web Essentials 2013 以忽略文件?

标签 web-essentials jscs

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

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

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

  • 这些方法都没有对生成的 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/

    相关文章:

    javascript - 如何用 JSCS 规则替换弃用的 JSHint 选项?

    css - 如何在模块化LESS文件中引用全局变量?

    visual-studio-2013 - 使用 Knockout 时防止 Web Essentials JsHint "ko is not defined"警告

    visual-studio - Typescript 无法在 VS2012 中正确编译

    ecmascript-6 - 为什么我应该在函数内部使用 let 而不是 const?

    javascript - Gulp:带参数的 Jsc

    gulp - 无法让 gulp-jscs 在原始文件上写入固定文件

    visual-studio-2017 - Web Essentials 2017 未出现在 VS 2017 中

    css - 从 Less 文件创建 CSS 文件

    javascript - eslint 中的 jscs `disallowKeywordsOnNewLine` 相当于什么?