目标:灵活执行jshint以将结果输出到控制台(如果在开发中)或文件(如果在Jenkins中发布)。
有可能吗?我可以将个别目标添加到我的jshint设置中,但除了记者详细信息之外,我的所有选项都是相同的。所以不重复那些是很好的。我需要从“all”进行连接,并使用所有全局选项和被调用目标的特定选项。怎么样?
jshint.js:
module.exports = {
options: {
node: true,
browser: true,
blah: blah...
},
all: [
'Gruntfile.js',
'<%= yeoman.app %>/modules/**/*.js',
'<%= yeoman.app %>/*.js'
],
dev: {
options: {
reporter: 'checkstyle'
}
}
release: {
options: {
reporter: 'checkstyle',
reporterOutput: 'myfile.xml'
}
}
};
答案 0 :(得分:0)
我希望这可以帮助您,它只是一个示例,您可以改进代码。
安装:grunt-contrib-jshint
Gruntfile.js
//Jshint ===============================
var jshint;
config.jshint = jshint ={};
jshint.dist = {
options: {jshintrc: ".jshintrc"},
files: {all: ["lib/main.js","lib/test.js"]}
};
jshint.dev = {
options: {jshintrc: ".jshintrc.dev"},
files: {all: ["lib/main.js","lib/test.js"]}
};
<强> .jshintrc 强>
{
"strict":true,
"laxcomma":true,
"sub":true
}
<强> .jshintrc.dev 强>
{
"strict":true,
"laxcomma":true,
"sub":true,
"debug":true
}
答案 1 :(得分:0)
如果两个目标之间的选项子集相同,则可以为对象创建变量,并将其值分配给目标的option
键:
var reporterOptions = {
foo: 'red',
bar: 'green',
baz: 'blue'
};
module.exports = {
options: {
node: true,
browser: true,
blah: blah...
},
all: [
'Gruntfile.js',
'<%= yeoman.app %>/modules/**/*.js',
'<%= yeoman.app %>/*.js'
],
dev: {
options: reporterOptions
}
release: {
options: reporterOptions
}
};
如果要在一个地方维护选项值,但又想有选择地决定将哪些选项应用于哪些目标,则可以使用点表示法引用存储在变量中的值。
var reporterOptions = {
foo: 'red',
bar: 'green',
baz: 'blue'
};
module.exports = {
options: {
node: true,
browser: true,
blah: blah...
},
all: [
'Gruntfile.js',
'<%= yeoman.app %>/modules/**/*.js',
'<%= yeoman.app %>/*.js'
],
dev: {
options: {
foo: reporterOptions.foo
bar: reporterOptions.bar
}
}
release: {
options: {
foo: reporterOptions.foo
baz: reporterOptions.baz
}
}
};
答案 2 :(得分:0)
我最终走了变量路线,但是将其用于文件源,然后覆盖目标中的必要选项。
var files = [
'Gruntfile.js',
'<%= yeoman.app %>/modules/**/*.js',
'<%= yeoman.app %>/*.js'
];
module.exports = {
options: {
reporter: require('jshint-stylish'),
node: true, ...
},
dev: {
src: files
},
release: {
src: files,
options: {
reporter: 'checkstyle',
reporterOutput: 'myfile.xml',
reporterOutputRelative: false
}
}
}
根据我读过的其他内容,我不认为默认选项会在目标中起作用并允许覆盖,而且我也遇到了文件问题,但这解决了所有问题。