目标:灵活执行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'
}
}
};发布于 2016-05-11 21:27:00
最后,我选择了变量路由,但将其用于文件源文件,然后覆盖目标中的必要选项。
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
}
}
}基于我阅读过的其他内容,我认为默认选项不会在目标中工作,并允许重写,而且我也遇到了文件问题,但这解决了所有问题。
发布于 2016-05-11 08:58:37
我希望这能对你有所帮助,这只是一个例子,你可以改进代码。
安装: 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
}发布于 2016-05-11 12:30:42
如果在两个目标之间有相同的选项子集,则可以为对象创建一个变量,并将其值赋给两个目标的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
}
}
};https://stackoverflow.com/questions/37149523
复制相似问题