jshint grunt导出的选项

时间:2013-06-04 21:32:19

标签: gruntjs jshint

您好我正在努力实现以下目标。我正在使用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上发了个问题

2 个答案:

答案 0 :(得分:1)

这是最近修复的,现在正如我所料的那样起作用。

github-issue

作为一个例子,我在我的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%肯定是否有效,但我认为它至少应该引导你走向正确的方向。如果您需要指定一个路径,而不仅仅是一个用于排除的文件,您可以将您的记录器文件放在一个单独的文件夹中,只需排除该文件夹即可!