您好我正在努力实现以下目标。我正在使用grunt进行jshint验证。
我用过的文件中的某处:
var logger = function () {
// some ode
}
因为实际上从未使用过记录器,所以jshint正确地向我显示了以下错误。
W098: 'logger' is defined but never used.
我可以将未使用设置为false,它会完美运行。但我实际上希望选项发生在其他文件中并警告我未使用的变量。因此,未使用的选项对我不起作用。
我还看到我可以使用这样的内联注释: *导出EXPORTED_LIB * /
但我实际上更愿意避免使用此类评论来混淆我的文件。我是否有机会在我的grunt文件中指定导出的选项,例如我可以为全局变量。
这是我的gruntfile的jshint部分:
jshint: {
// global options
options: {
camelcase: true,
curly: true,
eqeqeq: true,
forin: true,
immed: true,
indent: 4,
latedef: true,
newcap: true,
noarg: true,
nonew: true,
plusplus: false,
quotmark: 'single',
undef: true,
unused: true,
strict: true,
maxparams: 4,
maxdepth: 4,
trailing: true,
maxlen: 120,
browser: true,
node: true
},
server_logger: {
src: [BASE_PATH_SERVER_LOGGER, '/**/*.js'].join(''),
options: {
browser: false
}
},
client_logger: {
src: [BASE_PATH_CLIENT_LOGGER, '/**/*.js'].join(''),
options: {
node: false,
devel: true
}
}
}
感谢您的时间。
祝你好运 Playerwtf
更新:我在jshint github存储库here上发了个问题
答案 0 :(得分:1)
这是最近修复的,现在正如我所料的那样起作用。
作为一个例子,我在我的gruntfile
中使用它client_logger: {
expand: true,
cwd: BASE_PATH_CLIENT_LOGGER,
src: '**/*.js',
options: {
node: false,
devel: true,
globals: {
logger: true,
expect: true,
it: true,
describe: true,
beforeEach: true,
afterEach: true
},
exported: ['logger']
}
}
但是npm模块还没有更新。如果你希望这个工作,你将不得不从jshint github存储库手动复制最新版本并替换当前模块中的版本或等到它更新。
答案 1 :(得分:0)
我认为你可以排除你的src文件中的文件,所以你可以从你的基本linting中排除你的logger文件(我想这里的logger文件是logger.js),并且使用unused-flag分别记录logger文件关掉。
详细了解here - > “!在模式的开头会否定匹配”
你可以设置cwd(并保留连接内容)。在文档中查看更多相关信息:Building the files object dynamically
jshint: {
// global options
options: {
... your global options here
},
server_logger: {
options: {
browser: false
},
files: [{
cwd: BASE_PATH_SERVER_LOGGER,
src: ['/**/*.js', '!logger.js']
}]
},
client_logger: {
options: {
node: false,
devel: true
},
files: [{
cwd: BASE_PATH_CLIENT_LOGGER,
src: ['/**/*.js', '!logger.js']
}]
},
lint_logger: {
options: {
unused: false
},
files: [{
src: ['logger.js']
}]
}
}
不是100%肯定是否有效,但我认为它至少应该引导你走向正确的方向。如果您需要指定一个路径,而不仅仅是一个用于排除的文件,您可以将您的记录器文件放在一个单独的文件夹中,只需排除该文件夹即可!