Jshint: ํƒญ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•จ

์— ๋งŒ๋“  2017๋…„ 06์›” 23์ผ  ยท  29์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jshint/jshint

ํƒญ์„ ์‚ฌ์šฉํ•œ ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ ์–ด๋„ 3๊ฐ€์ง€ ๊ทœ์น™์— ์˜ํ•ด ๋ณด๊ณ ๋œ ์œ„์น˜๋ฅผ ๊นจ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ชจ๋‘ ์ด .jshintrc ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฐํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

{
  "strict": "global",
  "unused": true
}

ํ…Œ์ŠคํŠธํ•œ JSHint ๋ฒ„์ „์€ v2.9.5์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•˜์‹œ๋ฉด ์ €๋„ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

W032

์ด ์ฝ”๋“œ๋ฅผ ๋ฆฐํŠธํ•˜๋ฉด:

'use strict';

    function foo() {
    };

foo();

4ํ–‰ 6์—ด์— ๋ณด๊ณ ๋œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ 4ํ–‰์—๋Š” 4์ž๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

W098

์ด ์ฝ”๋“œ๋ฅผ ๋ฆฐํŠธํ•˜๋ฉด:

'use strict';

    function foobar(
        $foo
    ) {
        return 'foo';
    }

foobar();

4ํ–‰, 9์—ด์— ๋ณด๊ณ ๋œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ 4ํ–‰์—๋Š” 7์ž๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

W117

์ด ์ฝ”๋“œ๋ฅผ ๋ฆฐํŠธํ•˜๋ฉด:

'use strict';

    function foobar() {
        if (true) {
            fun1();
        }
    }

foobar();

5ํ–‰, 13์—ด์— ๋ณด๊ณ ๋œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ 4ํ–‰์—๋Š” 11์ž๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ณด๊ณ ๋œ ๋ฌธ์ž ์œ„์น˜๋Š” ๋ฌธ์ œ์˜ ์ค„ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋” ๋งŽ์€ ํƒญ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์›์‹œ ํŒŒ์ผ์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: linter-jshint_GH416.zip

https://github.com/AtomLinter/linter-jshint/issues/416์„ ์กฐ์‚ฌํ•˜๋Š” ๋™์•ˆ ์›๋ž˜ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ง„ ๊ทœ์น™:

  • W009
  • W014
  • E015
  • W024
  • W027
  • W030
  • W032
  • W033
  • W040
  • W043
  • W069
  • W075
  • W098
  • W116
  • W119
  • W140
  • E041
  • ๋งŽ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ...
Needs Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋นŒ์–ด๋จน์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ 2017๋…„์— ๋ฆฐํŠธํ•˜๋ ค๊ณ  ์ง€๋‚œ 5์‹œ๊ฐ„ ๋™์•ˆ ๋‹น์‹ ์˜ ๋ชจ๋“  ์†”๋ฃจ์…˜์„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋„๋Œ€์ฒด ํƒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  29 ๋Œ“๊ธ€

์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋ฌธ์ œ ๋Š” lex.js ์˜ 1610๋ฒˆ์งธ ์ค„ ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.

this.input = this.input.replace(/\t/g, state.tab);

์ด๊ฒƒ์€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์Šคํƒ€์ผ ๊ด€๋ จ ๋ฆฐํŠธ ๊ทœ์น™์ด ๊ตฌํ˜„๋˜๋Š”์ง€์— ์žˆ์–ด ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ์ด์ œ ํ•œ๋™์•ˆ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ƒˆ๋กœ์šด ์ฃผ์š” ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ๋™์ž‘์„ ๋ณด์กดํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ดˆ๊ธฐ ์ƒ๊ฐ์€ ์ด "์œ ํšจ ์˜คํ”„์…‹"์„ column ๋ผ๋Š” ํ† ํฐ ๊ฐœ์ฒด์˜ ์ƒˆ ์†์„ฑ์œผ๋กœ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํƒ€์ผ ๊ด€๋ จ ๊ฒฝ๊ณ ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ character ์†์„ฑ์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜์—ฌ "true" ๋ฌธ์ž ์˜คํ”„์…‹์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ ์ฝ”๋“œ ํฌ์ธํŠธ(ํƒญ ๋˜๋Š” ๊ธฐํƒ€)๋Š” ์นด์šดํŠธ๋ฅผ ์ •ํ™•ํžˆ 1๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌํ„ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํƒญ ๋ฌธ์ž๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•˜๊ณ  ๋ณด๊ณ ๋œ "์—ด" ๋ฒˆํ˜ธ๋ฅผ ๊ทธ์— ๋”ฐ๋ผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Arcanemagus, ์ž˜ ๋“ค๋ฆฌ๋‚˜์š”?

์ ์–ด๋„ JSHint์˜ ๋‚ด๋ถ€์— ๋Œ€ํ•œ ์‹ค์ œ ์ง€์‹์ด ์—†๋Š” ์ƒํƒœ์—์„œ ํ‘œ๋ฉด์ ์œผ๋กœ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ˜›. ์ด์ƒ์ ์œผ๋กœ๋Š” ์‹ค์ œ ์—ด ์ˆ˜(๊ฐ ์ฝ”๋“œ ํฌ์ธํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ์—ด๋กœ ๊ณ„์‚ฐ๋˜๋Š”)๋ฅผ ์–ป๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฐ˜ ๊ณตํ†ต ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์˜ค๋ž˜๋œ ํŒŒ์„œ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธํ•ด ๋ณธ์งˆ์ ์œผ๋กœ ๋ฌด์‹œ๋˜๋Š” ์ด ๊ฒฝ๊ณ ๋กœ ์ธํ•ด ์ž ์‹œ ์ˆจ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค. ํ›จ์”ฌ ์ข‹์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ ์‹ค์ˆ˜๋กœ ์‚ฌ์šฉ์ž๋ฅผ _์ˆจ๊ฒผ์Šต๋‹ˆ๋‹ค_. ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์— ์ด๋ฅผ ๋‹ค์‹œ ํ‘œ์‹œํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

W030 , W033 ๋ฐ W009 ๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์„ค๋ช…์—์„œ _๋ชจ๋“ _ ๊ทœ์น™์ด ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ?

์ €๋„ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜์™€ ๊ฒฝ๊ณ ๋ฅผ ๋ชจ๋‘ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™/์˜ค๋ฅ˜ ์œ ํ˜•์€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋‚ด '=='๊ฐ€ '==='์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•˜๋ ค๋Š” jshint์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ฃผํ™ฉ์ƒ‰ ๋ฐ‘์ค„์˜ ์ž˜๋ชป๋œ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
erroneoustargeting

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ƒ๊ฐ์ด ํ™•์ธ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ํŒŒํ—ค์น  ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. indent ์˜ต์…˜์„ 1 ๋กœ ์„ค์ •ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Arcanemagus ์†Œ๋น„์ž๋ฅผ ์œ„ํ•œ indent ์˜ต์…˜์˜ ๊ฐ€์น˜๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด JSHint ์ž์ฒด์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์†Œ๋น„์ž์—๊ฒŒ ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ๋ผ๋ฆฌ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ , ํ˜„์žฌ ์ด ํ”„๋กœ์ ํŠธ๋Š” CLI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Node.js API๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • indent ๊ฐ’์„ ๊ฐ•์ œ๋กœ ์ ์šฉํ•˜๋ฉด ์†Œ๋น„์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๊นŒ? ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ๋ชฉํ‘œ๋Š” jshint ์ž์ฒด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€๊น์ง€๋งŒ ๊ฒฐ๊ณผ๋ฅผ ํŽธ์ง‘๊ธฐ์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • JSHint API์— ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ˆจ๊ฒจ์ง„ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ˜„์žฌ ๋ฌธ์„œ ์—๋Š” ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ํ‘œ์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์—์„œ ๊ฐ’์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
๊ทธ๋Ÿฐ ๊ฒƒ์€ nginx์˜ -g, ssh์˜ -o, git์˜ -c ๋“ฑ๊ณผ ๊ฐ™์€ ๋„๊ตฌ์—์„œ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

$ jshint -o "indent = 1" -o "-W034 = true" -o "globals.require = false" -o "globals.$ = null"

์ด๊ฑฐ ์–ด๋–ค ๋ฒ„์ „์— ๋„์ž…๋˜์—ˆ๋Š”์ง€ ์•„์‹œ๋Š” ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”? 2.9.5?

์ ์–ด๋„ ์ž ์‹œ ๋™์•ˆ ์ž„์‹œ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์น˜๋‹ค.

@jaredatch https://github.com/AtomLinter/linter-jshint/pull/386(v3.1.0 of linter-jshint ๋ฆด๋ฆฌ์Šค)์—์„œ JSHint์˜ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ์ง€์  ๋ณด๊ณ ์— ๋Œ€ํ•œ ๋ชจ๋“  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒ€์‚ฌ์˜ ์š”์ ์€ ๋ฆฐํ„ฐ๊ฐ€ ์ž˜๋ชป๋œ ์ ์„ ๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ฆฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” _๋ชจ๋“  ์‚ฌ๋žŒ_์— ๋Œ€ํ•ด ๋ณด๊ณ ๋˜๊ณ  ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๊ฒฐ๊ตญ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋ฆฐํ„ฐ๋ฅผ ๋ฏฟ์„ ์ˆ˜ ์—†๋‹ค๋ฉด ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ์š”?)

์ด ํƒญ ๋ฒ„๊ทธ๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ „๊ณผ ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฒ˜์Œ์— ๋ฐฐ์น˜ํ•˜๊ฒŒ ๋งŒ๋“  ์ฃผ์š” ํŒŒ์„œ ๋ฒ„๊ทธ ์ดํ›„์— "์Šค์œ„ํŠธ ์ŠคํŒŸ"์ด _may_ ์žˆ์Šต๋‹ˆ๋‹ค.

@Arcanemagus gotcha , ํ†ต์ฐฐ๋ ฅ์— ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ์ž‘์—…์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค ๐Ÿ‘

linter-jshint ์—์„œ ์ด๋Ÿฌํ•œ ์ž˜๋ชป๋œ ํฌ์ธํŠธ๋ฅผ ๋ณด๊ณ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋” ๋‚˜์€/๋” ์œ ์šฉํ•œ ๋ฉ”์‹œ์ง€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๊ธฐ์— PR์„ ์ œ์ถœํ•˜์„ธ์š” ๐Ÿ˜‰.

๋นŒ์–ด๋จน์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ 2017๋…„์— ๋ฆฐํŠธํ•˜๋ ค๊ณ  ์ง€๋‚œ 5์‹œ๊ฐ„ ๋™์•ˆ ๋‹น์‹ ์˜ ๋ชจ๋“  ์†”๋ฃจ์…˜์„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋„๋Œ€์ฒด ํƒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ˆ„๊ฐ€ ์ด ๊นจ์ง„ ์˜์–ด๋ฅผ ์˜์–ด๋ผ๋Š” ์ˆ˜๋ฐฑ๋งŒ ๋ช…์—๊ฒŒ ๊ณต๊ฐœํ•˜๋Š” ์ด์œ ์™€ ํ•จ๊ป˜ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋งˆ์นจํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์˜ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ฌธ์ž๋Š” ๋ฌธ์žฅ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์˜ต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค.

/ํŠธ๋กค (๋ฏธ์•ˆํ•ด, ์–ด์ฉ” ์ˆ˜ ์—†์—ˆ์–ด)

๊ธ€์Ž„, ์†”๋ฃจ์…˜์ด ๋‹น๋ถ„๊ฐ„ ์ด๊ฒƒ์„ ๋น„ํ™œ์„ฑํ™” ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ...
์–ด์จŒ๋“  ๋ˆ„๊ฐ€ ๋ฆฐํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๊นŒ?

@jugglinmike https://github.com/jshint/jshint/issues/3151#issuecomment -312512856์˜ ์งˆ๋ฌธ์— ๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด 20๊ฐœ์˜ ๊ณ ์œ ํ•œ ๋ฌธ์ œ๊ฐ€ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋‚ด ๋ ˆ์ด๋”์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, @Arcanemagus. ๋ถˆํ–‰ํžˆ๋„, ๋‚˜๋Š” ์ด๋ฒˆ ์ฃผ๋ง๊นŒ์ง€ ๋งˆ๋•…ํžˆ ๋ฐ›์•„์•ผ ํ•  ๊ด€์‹ฌ์„ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‹น์‹ ์„ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@jugglinmike ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰

๊ธฐ์กด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ™•์ธ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ด๋ฏธ ์—ด๋ฆฐ ๋ฌธ์ œ๋กœ ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค.

@cobexer ์ €๋Š” ๊ทธ ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ์—๊ฒŒ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ๊ธธ์„ ์ œ์‹œํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
๋‹ค๋ฅธ ์ƒํ™ฉ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๊ฑฐ๊ธฐ์—์„œ
๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•œ ์ ์ด ์—†์œผ๋ฉฐ
์ƒˆ ๊ธฐ๋Šฅ์ด ๋ณด๊ธฐ์— ์ข‹๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿด ์ด์œ ๊ฐ€ ์žˆ๋‹ค
ํŠนํžˆ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "rc" ํŒŒ์ผ ์‚ฌ์ด, ์ธ๋ผ์ธ
๊ตฌ์„ฑ ๋ฐ Node.js API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•  ๋•Œ ์ด๋ฏธ ๊ฑธ๋ ค ๋„˜์–ด์ง‘๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ ์ด์œ ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฒกํ„ฐ ์ถ”๊ฐ€
๊ฒฝ์˜์ง„์€ ์ด ๋ฌธ์ œ๋ฅผ ์•…ํ™”์‹œํ‚ค๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ฐ€์žฅ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์€ ์ด์ „์ œ์•ˆ .
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” character ์†์„ฑ์„ ๊ณต๊ฐœ API์ธ Atom์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ตญ Editor ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด๊ฐ€ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์„ ์ˆ˜์ •ํ•˜๋Š” ๋Œ€์‹ 
ํ˜„์žฌ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ ,
character ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์š”์ฒญ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ
์†์„ฑ ์ด๋ฆ„.

์ด๋ฒˆ ์ฃผ๋ง์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํšŒ๊ท€๋ฅผ ํ”ผํ•˜๊ณ  ์‹ถ๋‹ค
๋ชจ๋“  ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ผ๊ด€๋˜๊ฒŒ ์ฃผ์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์ƒ ๋ฌธ์ž ๋ฒˆํ˜ธ. ์ด ์ผ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋‚˜๋Š”
๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ. gh-3174๋Š”
๊ทธ ๋ชฉํ‘œ.

์ด ๋ชจ๋“  ๊ฒƒ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. @Arcanemagus ๋‚ด๊ฐ€ ์•„๋Š”
๋‹น์‹ ์€ ์ด ๋ฒ„๊ทธ์˜ ์ง๊ฒฉํƒ„์„ ๋งž๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋ฒ„๊ทธ๋ฅผ
๊ฐœ์„ ๋œ JSHint๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ. ๋‚˜๋Š” ๋˜ํ•œ ๋‹น์‹ ์ด ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค
์‚ฌ์šฉ์ž์—๊ฒŒ ํˆฌ๋ช…ํ•˜์ง€ ์•Š์€ ์†”๋ฃจ์…˜์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค. ์งง์€ ์‹œ๊ฐ„์—
๊ธฐ๊ฐ„, ์‚ฌ์šฉ์ž์—๊ฒŒ indent ์˜ต์…˜์„ 1 ๋กœ ์„ค์ •ํ•˜๋„๋ก ๊ถŒ์žฅํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹จ๊ธฐ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ํŒจ์น˜ํ•œ ํ›„์—๋„ ๊ณ„์† ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Arcanemagus ๋‹น์‹ ์ด ์ด ๋ฒ„๊ทธ์˜ ์ง๊ฒฉํƒ„์„ ๋งž๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์„
๊ฐœ์„ ๋œ JSHint๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ.

๋Œ€๋ถ€๋ถ„์˜ Atom์šฉ Linter ์ œ๊ณต์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ชจ๋“  ์ด์œ ๋Š” ์ด์™€ ๊ฐ™์€ ๋ฒ„๊ทธ๊ฐ€ ์†Œ์Šค ๋ฆฐํ„ฐ์—์„œ ํฌ์ฐฉ๋˜์–ด ๋ณด๊ณ /์ˆ˜์ •๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋” ์ผ์ฐ ํฌ์ฐฉ๋˜์—ˆ์„ ๊ฒƒ์ด์ง€๋งŒ ํŒŒ์„œ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์„œ์—์„œ ์™„์ „ํžˆ ์‹คํŒจํ•˜๊ณ  ๋ณด๊ณ ํ•  ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์—ˆ์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ _way_์—์„œ ๋ชจ๋“  ์ž˜๋ชป๋œ ํฌ์ธํŠธ ์˜ค๋ฅ˜๋ฅผ โ€‹โ€‹์ˆจ๊ฒผ๋˜ linter-jshint ์— ํ™•์ธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋˜๋Š” ์ค‘๋ณต ์ œ๊ฑฐ ๋ฌธ์ œ ๋ณด๊ณ ์„œ. ์ด์ œ ๊ทธ๊ฒƒ๋“ค์ด ํŒŒ์•…๋˜์—ˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ˆ˜ํ‘œ๋ฅผ ์ œ๊ฑฐํ–ˆ๊ณ  ์—ฌ๊ธฐ ๐Ÿ˜›๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํˆฌ๋ช…ํ•˜์ง€ ์•Š์€ ์†”๋ฃจ์…˜์„ ํ”ผํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋Š” ์ ๋„ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ์ด ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•œ ํˆฌ๋ช…ํ•œ ์†”๋ฃจ์…˜์€ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. indent ์„ค์ •์„ 1 ๋กœ ๊ฐ•์ œํ•˜๋ฉด ๊ทธ๋“ค์ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ทธ๋“ค์ด ๋ณด๊ณ  ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. jshint ์ž์ฒด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋“ค์—ฌ์“ฐ๊ธฐ ์˜ต์…˜์„ 1๋กœ ์„ค์ •ํ•˜๋„๋ก ๊ถŒ์žฅํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฑด... ์‚ฌ์‹ค ๊ทธ ๋ฌธ์ œ์— ๊ธ€์„ ์˜ฌ๋ฆด ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์˜๊ฒฌ์—์„œ ๊ทธ๊ฒƒ์„ ์–ธ๊ธ‰ํ•˜๋„๋ก ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์˜ˆ, .jshintrc์—์„œ 'indent' ์†์„ฑ์„ 1๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋” ๋นจ๋ฆฌ ์•Œ์•˜๋”๋ผ๋ฉด ์ข‹์•˜์„ ํ…๋ฐ. jshint๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ es6์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ .jshintrc๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค, @tustin2121!

์—…๋ฐ์ดํŠธ: ์ €๋Š” ์—ฌ์ „ํžˆ ํšŒ๊ท€๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด JSHint ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋…ธ๋ ฅ์˜ ์ตœ์‹ ์ž‘์€ gh-3176์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
image

ํ˜„์žฌ ์ด ๋ฒ„๊ทธ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ทœ์น™์ด ์ตœ์†Œ 40๊ฐœ ์ด์ƒ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ˜›.

์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ,์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€ ๋ช‡ ๋‹ฌ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @xcrap์ž…๋‹ˆ๋‹ค! ๋ฐฉ๊ธˆ ๋Œ“๊ธ€ ์Šค๋ ˆ๋“œ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ์•„๋ฌด๋„ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์†Œ์‹์€ JSHint๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์†์„ ๋นŒ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ธฐ๊บผ์ด ์กฐ์–ธํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@jugglinmike ์ข‹๊ฒ ๋‹ค! ๋‚˜๋Š” ํ•ญ์ƒ ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ ์‹œ๋„ํ•˜์ง€๋งŒ ๋‚ด js ๊ธฐ์ˆ ์€ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ด๊ณ  ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. :)

์ด ๋ฒ„๊ทธ์— 50๋‹ฌ๋Ÿฌ์˜ ํ˜„์ƒ๊ธˆ์„ ๊ฑธ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด ๋งํฌ๋ฅผ ํ†ตํ•ด ํ˜„์ƒ๊ธˆ์„ ๋Š˜๋ฆฌ๋Š” ๋ฐ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://www.bountysource.com/issues/46533252-tab-indentation-breaks-multiple-rules

@tzvipm ์˜ ํฌํฌ๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  jshint๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด ๋ฌธ์ œ์— ๊ฑธ๋ ค ๋„˜์–ด์ง€๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

git clone https://github.com/tzvipm/jshint
git remote add upstream [email protected]:jshint/jshint.git
git fetch upstream
git stash
git merge upstream/master
git mergetool --tool=opendiff
npm run build
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰