【发布时间】:2013-11-26 08:30:29
【问题描述】:
是否可以在不使用 Checkstyle 或 JSLint 报告器的情况下将 JSHint 集成到 Jenkins 中?
我之所以要这样做是因为默认情况下两个报告器也显示非错误,这不是我想要的(另请参阅JSHint shows non-errors for checkstyle reporter)。
有没有办法直接集成JSHint?
【问题讨论】:
是否可以在不使用 Checkstyle 或 JSLint 报告器的情况下将 JSHint 集成到 Jenkins 中?
我之所以要这样做是因为默认情况下两个报告器也显示非错误,这不是我想要的(另请参阅JSHint shows non-errors for checkstyle reporter)。
有没有办法直接集成JSHint?
【问题讨论】:
上周我遇到了类似的问题,但是我使用 grunt 来运行 jshint。我只是覆盖 jshint 选项,这里是示例代码:
jshint: {
options: {
jshintrc: '../config/.jshintrc',
},
src1: [
'file1.js',
'file2.js'
],
src2: [
'source/file3.js',
'source/file4.js'
],
jenkins: {
options: {
jshintrc: '../config/.jshintrc',
reporter: 'checkstyle',
reporterOutput: 'jshint.xml',
},
src: [ "<%= jshint.src1 %>", "<%= jshint.src2 %>" ]
},
}
所以当你想在 jenkins 上运行 jslint 时,你只需运行:
grunt jshint:jenkins
并生成输出到 .xml 文件。希望对您有所帮助。
【讨论】:
我想指出,jsHint 现在可以处理 Report Violations,但您必须将报告类型设置为 jslint-xml。这是 Ant 任务的示例:
<jshint dir="${js.dir}">
options="${jshint.options}">
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
<report type="jslint-xml"/>
</jshint>
使用Jenkins的违规插件,并输入您的_jsHint_ XML output in the space forjslint`的名称。
而且,它实际上也记录在README.md 中。我错过了。
【讨论】:
这是实现@mateusz 出色答案的另一种方式。不要创建一个将所有文件与额外报告选项组合在一起的附加目标,而是仅在传入--jenkins 时覆盖报告和输出。
var JENKINS = grunt.option('jenkins');
...
jshint: {
options: {
jshintrc: '../config/.jshintrc',
reporter: JENKINS && 'checkstyle',
reporterOutput: JENKINS && 'jshint.xml'
},
src1: [
'file1.js',
'file2.js'
],
src2: [
'source/file3.js',
'source/file4.js'
]
}
它不仅可以避免重复文件,而且在某些情况下您不能将它们全部组合成一个任务。在我们的例子中,我们使用不同的 .jshintrc 文件作为源文件和测试文件。此方法的一个附带好处是您可以轻松地将选项应用于其他任务,而无需为每个任务重复。
$ grunt jshint --jenkins
【讨论】: