jshint grunt exported options

♀尐吖头ヾ 提交于 2019-12-13 01:19:40

问题


Hi I'm trying to achieve the following. I'm using grunt for jshint validating.

Somewhere in a file I have used:

var logger = function () {
 // some ode
}

Because logger is never actually used jshint correctly shows me the following error.

W098: 'logger' is defined but never used.

I could set unused to false and it would work perfectly. But I actually want the option to take place in other files and warn me about unused variables. So the unused option is not gonna work for me.

I also saw that I could use a inline comment like this: * exported EXPORTED_LIB */

But I would actually prefer to avoid cluttering my files with such comments. Is there any chance I can specify an exported options in my grunt file like I can for example for globals.

Heres the jshint part of my gruntfile:

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
            }

        }
    }

Thanks for your time.

Best regards Playerwtf

UPDATE: I made an issue on jshint github repository here


回答1:


This was recently fixxed and works now as I would expect it.

github-issue

As an example I use it like this in my 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']
    }
}

But the npm module was not yet updated. If you want this to work you will have to manually copy the newest version from the jshint github repository and replace the one in the current module or wait until it is updated.




回答2:


i think you can exclude files in your src-files, so you could exclude your logger file from your basic linting (i suppose the logger file is logger.js here), and lint the logger file separatly with the unused-flag turned off.

read more about that here -> "! at the beginning of a pattern will negate the match"

you could set the cwd (and leave the join stuff). see more about that in the docs: 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']
        }]
    }
}

not 100% sure if that works, but i think it should at least lead you into the right direction. if you need to specify a path and not only a file for excluding you could put your logger-file in a separate folder an just exclude that folder!



来源:https://stackoverflow.com/questions/16927846/jshint-grunt-exported-options

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!