grunt-contrib-jshint v0.8.0
使用 JSHint 验证 JavaScript 文件
Getting Started
这个插件要求 Grunt 为 0.4.0 或以上版本。
请查阅相关文档来了解什么是 Grunt Grunt新手入门,比如如何创建 Gruntfile,如何配置 Grunt 任务,如何安装 Grunt 插件。
安装
npm install grunt-contrib-jshint --save-dev
安装好之后,可以在 Gruntfile 文件中使用如下方式载入这个插件:
grunt.loadNpmTasks('grunt-contrib-jshint');
也可以通过在 package.json 文件中配置插件依赖,然后使用 npm install 的方式统一安装所有依赖的插件。
Jshint 任务
可以使用 grunt jshint 命令来运行一个 jshint 任务。
任务目标,需要检查的文件以及其他配置选项在任务配置中指定。
配置选项
指定的任何选项都会直接传递给 JSHint,因此可以指定任何 JSHint 所支持的选项。查看官方文档可以获取对应的选项支持列表。
事实上 JSHint 还支持一些额外的配置选项。
globals
- 类型 (Type):
Object - 默认值:
null
这个选项用于配置一个全局变量映射,其中每个键 (keys) — 属性名对应一个 Boolean 值用于表示这些全局变量是否可信任。这个选项并非标准的 JSHint 选项,但是它可以作为第三个参数传递给 JSHINT 函数。详细信息请参阅官方文档
jshintrc
- 类型:
Object或者true - 默认值:
null
设置为 true 就表示没有给 jshint 传递配置信息,并且 jshint 会自动相对于要检测的文件来搜索 .jshintrc 文档。
如果指定一个文件名,就会启用这个文件中指定的选项和全局定义。.jshintrc 必须是一个有效的 JSON 文件并且看起来像下面这样:
{"curly": true,"eqnull": true,"eqeqeq": true,"undef": true,"globals": {"jQuery": true}}
注意
.jshintrc中的设置不会与 Grunt 配置中的选项合并。
extensions
- 类型:
String - 默认值:
''
检查列表中指定的非 .js 扩展名的文件。
ignores
- 类型:
Array - 默认值:
null
一个忽略的文件和目录列表。启用这个选项会覆盖 .jshintignore 中的设置,但是不会合并。
force
- 类型:
Boolean - 默认值:
false
设置 force 选项为 true 就表示报告 JSHint 错误但是不会让任务失败(不终止任务)。
reporter
- 类型:
String - 默认值:
null
允许修改这个插件的输出。默认情况下它使用的是内置的 Grunt reporter。可以设置为自己的自定义的 reporter 或者 JSHint 内置的 reporters:jshint 或者 checkstyle。
reportOutput
- 类型:
String - 默认值:
null
指定一个文件路径来输出 reporter 的结果。如果指定了 reportOutput ,那么所有的输出信息都会写入指定的文件路径,而不是打印标准输出流。
示例
使用通配符
在下面的例子中,运行 grunt jshint:all 或者 grunt jshint (因为 jshint 是一个多任务类型的任务)就会校验项目的 Gruntfile 文件,以及位于 lib 和 test 目录及其子目录中的所有 JavaScript 文件,这里会使用 JSHint 的默认配置。
// 项目配置grunt.initConfig({jshint: { // 任务名称// 任务目标,这里的 all 目标是可选的// 注意这里的文件列表是使用数组指定的all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js']}});
校验合并前和合并后的文件
在下面的例子中,运行 grunt jshint 将会自动校验 ‘beforeconcat’ 和 ‘afterconcat’ 中指定的文件。在这里,这方式并不理想,因为 dist/output.js 可能在使用 grunt-contrib-concat 插件的 concat 任务创建之前就进行校验操作了。
这种情况下,就应该先校验 ‘beforeconcat’ 中指定的文件,然后在校验 ‘afterconcat’ 中指定的文件,通过运行 grunt jshint:befoerconcat concat jshint:afterconcat 以手动指定任务运行顺序的方式达到预期的要求。
grunt.initConfig({concat: {dist: {src: ['src/foo.js', 'src/bar.js'],dest: 'dist/output.js'}},jshint: {beforeconcat: ['src/foo.js', 'src/bar.js'],afterconcat: ['dist/output.js']}});
设置 JSHint 选项和 gobals
在下面的例子中,使用自定义的方式指定 JShint 的相关选项。注意,运行 grunt jshint:uses_defaults 时,会启用默认的选项校验文件,但是运行 grunt jshint:with_overrides 时,就会使用合并后的任务/目标选项来校验文件。
grunt.initConfig({jshint: {options: {curly: true,eqeqeq: true,eqnull: true,browser: true,globals: {jQuery: true},},uses_defaults: ['dir1/**/*.js', 'dir2/**/*.js'],with_overrides: {options: {curly: false,undef: true,},files: {src: ['dir3/**/*.js', 'dir4/**/*.js']},}},});
忽略特定的警告信息
如果希望忽略下面这种特定的警告信息:
[L24:C9] W015: Expected '}' to have an indentation at 11 instead at 9.
可以通过在选项中给警告信息 id 前置一个 - 做到:
grunt.initConfig({jshint: {ignore_warning: {options: {'-W015': true,},src: ['**/*.js'],},},});
