我在VS 2013(更新1)中安装了一个新的MVC 5.1 Web应用程序项目,其中包含Web Essential 2013(最新截至今天)。构建项目后,Web Essentials将扫描javascript文件并将消息发布到输出窗口以查找找到的任何问题。对于一个全新的MVC 5.1项目,它会生成超过11,000条消息 - 这些消息并不真正有用。
我尝试了两种方法来忽略默认情况下新MVC 5项目中包含的有问题的javascript文件:
使用Web Essentials>编辑全局JSCS设置命令以在我的用户配置文件目录中打开.jscs.json文件。然后将“excludeFiles”属性修改为[“test / data / .js”,“Scripts / jquery .js”]。
使用“jquery * .js”在我的Scripts文件夹中创建了一个.jshintignore文件。
这些方法都没有对生成的JSCS消息产生任何影响。我做错了什么,或者这是Web Essentials的问题?
答案 0 :(得分:18)
更新4:
最新的Web Essentials 2013 1.9具有“更好地忽略lint跑步者的逻辑”,所有问题都被清除了。您现在可以打开“Run on build”。它具有常见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的serval秒。如果您不想等,请转到“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。它将停止“Run on build”功能。这意味着即使你打开它,它也不会在构建上运行。但是“Run on save True”仍然会在预览,打开和保存时运行。 excludeFiles的正确相对模式是**/Script/**
。
因此,对于缩小的js的推荐排除规则将是:
"excludeFiles": ["**/Scripts/**.min.js", "**/Scripts/**.debug.js", "**/Scripts/**.intellisense.js", "**/Scripts/**-vsdoc.js"],
或者只使用**/Script/**
将它们全部排除。
根据JSHint/JSCS Errors on .min files and others?,<?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文件生成另一个Build错误:
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>
我不知道如何避免它。所以也许最好的方法就是第一种简单方法。
答案 1 :(得分:7)
安装KendoUI后我遇到了同样的问题。基本上不可能运行该项目。我通过访问Web Essentials解决了这个问题 - &gt;编辑全局JSCS设置并添加:
"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/*"]
替换为您要排除的内容即可。对我来说就像一个魅力。
答案 2 :(得分:2)
.jscsrc 中的 excludeFiles 选项是正确的方法,但您需要将其指定为完整的文件系统路径,而不是项目的相对路径让它工作。请注意前导斜杠/ ,而不仅仅是 ** 。您也可以定位更具体的文件夹,但似乎需要包含 / 才能使其正常工作。我怀疑你可以研究节点文件通配文档来真正理解选项。
在我的计算机上,使用Web Essentials 2013 for Update 2,以下步骤为所有文件禁用了JSCS:
"excludeFiles": ["/**"],
并保存设置文件无需重新启动Visual Studio。
答案 3 :(得分:2)
Web Essentials 2013版本2.3添加了一种处理此问题的新方法:.weignore。请参阅http://vswebessentials.com/features/general#weignore或https://github.com/madskristensen/WebEssentials2013/pull/1250。新方法比旧方法更好,因为这是管理所有编译器和链接器的集中和一致的地方。它更快,因为旧的方法仍然需要由编译器和链接器运行每个目标文件,然后被它们忽略。新方法将忽略Web Essentials本身,减少运行到编译器和链接器的时间/ CPU /磁盘。并且无需了解每个编译器并使用特定的配置格式来执行相同的操作。