javascriptjshintautomatic-semicolon-insertion

Put semicolons in asi mode before brackets


I'm linting my JavaScript with JSHint, and have this option enabled

"asi": true,
"white": true

to avoid semicolons in my code.

But I have to begin my new line with a bracket, so I have to put a semicolon before the opening of that one

;(function () {

})

JSHint give me two errors:

I noticed that in this way JSHint is happy

;
(function () {

})

but I think is not a good solution.

Is there a way to solve this problem, without turning off JSHint or the white option?


Solution

  • The legacy white: true option in JSHint is used to enforce the coding style promoted by Douglas Crockford in his original JSLint tool. Semicolon-less JavaScript code will not fit his coding style. If you don't want to be restricted to his style guidelines then don't use white: true.

    This list of JSHint options doesn't show any parameters to customize the coding style they enforce.

    To prove that there isn't an answer to this, I went and found the relevant check in the JSHint source:

    function nonadjacent(left, right) {
        if (option.white) {
            left = left || token;
            right = right || nexttoken;
            if (left.line === right.line && left.character === right.from) {
                left.from += (left.character - left.from);
                warning("Missing space after '{a}'.",
                        left, left.value);
            }
        }
    }
    

    The only configuration option checked is option.white, so unfortunately there isn't any way to achieve your desired behavior. If you really wanted a tool that would do exactly what you want, you could easily fork JSHint, add another option, and check it in the nonadjacent function.