Js-beautify: 데이지 체인 λ“€μ—¬μ“°κΈ°λŠ” κ³Όλ„ν•œ λ“€μ—¬μ“°κΈ°λ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€.

에 λ§Œλ“  2014λ…„ 06μ›” 20일  Β·  18μ½”λ©˜νŠΈ  Β·  좜처: beautify-web/js-beautify

https://github.com/enginespot/js-beautify-sublime 을 톡해 이것을 μ‚¬μš©

μ˜ˆμƒλ˜λŠ”:

.foo()
.bar();

μ‹€μ œ:

  .foo()
  .bar();

문제λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄: ν˜„μž¬ λ“€μ—¬μ“°κΈ°λŠ” λ‹€μŒκ³Ό 같은 EOF둜 μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

      });
    });
})();

그것은 λ‚˜μ—κ²Œ 였λ₯˜μ²˜λŸΌ 보이며 원인을 찾도둝 μœ λ„ν•©λ‹ˆλ‹€.

enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 μš”μ²­μ„ +1ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 Promise둜 μž‘μ—…ν•  λ•Œ 특히 νŽΈλ¦¬ν•©λ‹ˆλ‹€.

Promise.resolve()
.then(function() {
  return foo.bar()
})
.then(function() {
  return foo.baz();
})
.then(function() {
 //...
}) //...
//...

이 연결은 μž μ‹œ λ™μ•ˆ 계속될 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 더 λ³΅μž‘ν•œ api 끝점을 μž‘μ„±ν•  λ•Œ λ”μš± κ·Έλ ‡μŠ΅λ‹ˆλ‹€. 맨 μ•„λž˜λ₯Ό λ³Ό λ•Œμ―€μ΄λ©΄ κ°€κΉŒμ΄μ— μžˆλŠ” ν•­λͺ©κ³Ό κ΄€λ ¨ν•˜μ—¬ λ“€μ—¬μ“°κΈ°κ°€ μ™„λ£Œλ˜λŠ” 방식에 λŒ€ν•΄ λŠμž„μ—†μ΄ λ‹Ήν™©ν•˜κ²Œ λ©λ‹ˆλ‹€.

λ‚˜λŠ” λͺ¨λ“  λ‹«λŠ” λ“€μ—¬μ“°κΈ°κ°€ λ‹€μŒμœΌλ‘œ κ°€κΉŒμš΄ 것과 ν•œ μˆ˜μ€€μ˜ 깊이 차이가 λ˜λŠ” 것이 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λͺ¨λ“  18 λŒ“κΈ€

ꡬ성과 ν•¨κ»˜ 전체 μž…λ ₯ 및 μ˜ˆμƒ 좜λ ₯을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ˜ˆμƒ 쑰각(μ†”μ§νžˆ λΆ€μ •ν™•ν•΄ λ³΄μ΄λŠ”)을 λ‹«λŠ” 블둝과 μ—°κ΄€μ‹œν‚€λŠ” 데 어렀움을 κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”!

이 λΆ„μ•Όμ˜ λ§Žμ€ 것듀이 κ·ΈλŸ¬ν•˜λ“―, 이것은 λ¬Όλ‘  객관적인 진싀이라기 λ³΄λ‹€λŠ” 개인의 μ·¨ν–₯κ³Ό μŠ΅κ΄€μ˜ λ¬Έμ œμž…λ‹ˆλ‹€.

처리 ν›„ λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

(function () {
    'use strict';

    angular
        .module('module', [])
        .directive('appVersion', ['version',
            function (version) {
                return function (scope, elm, attrs) {
                    elm.text(version);
                };
            }
        ])
        .directive('foo', [

            function () {
                return {};
            }
        ])
        .directive('bar', [

            function () {
                return {};
            }
        ]);
})();

λ‚˜λŠ” 이것을 μ›ν•œλ‹€:

(function () {
    'use strict';

    angular
    .module('module', [])
    .directive('appVersion', ['version',
        function (version) {
            return function (scope, elm, attrs) {
                elm.text(version);
            };
        }
    ])
    .directive('foo', [
        function () {
            return {};
        }
    ])
    .directive('bar', [
        function () {
            return {};
        }
    ]);
})();

이것은 λ‚΄ κ΅¬μ„±μž…λ‹ˆλ‹€.

{
    "indent_level": 0,
    "indent_with_tabs": true,
    "preserve_newlines": true,
    "max_preserve_newlines": 5,
    "jslint_happy": true,
    "brace_style": "collapse",
    "keep_array_indentation": false,
    "keep_function_indentation": false,
    "space_before_conditional": true,
    "break_chained_methods": true,
    "eval_code": false,
    "unescape_strings": false,
    "wrap_line_length": 0,

    // jsbeautify options
    "format_on_save": true,
    "use_original_indentation": true
}

+1

당신이 λ§ν•˜λŠ” λ¬Έμ œλŠ” ν•˜λ‚˜μ˜ λ“€μ—¬μ“°κΈ°μž…λ‹ˆλ‹€.

    angular
        .module('module', [])

μž μ‹œ μ‹œκ°„μ„ λ‚΄μ–΄ μ—¬λŸ¬λΆ„μ΄ 보고 μ‹Άμ–΄ ν•˜λŠ” 것에 κ°€κΉŒμ΄ λ‹€κ°€κ°€λŠ” 멋진 λŠλ‚Œμ„ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. κ³Όκ±°μ—λŠ” μš°λ¦¬κ°€ κ°€κΉŒμ΄ 갈 수 μ—†μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. :웃닀:

λ“€μ—¬μ“°κΈ°λŠ” νŠΉμ • λ¬Έμž₯의 일뢀인 μš”μ†Œλ₯Ό λͺ…ν™•ν•˜κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€. 일반적인 경우 λ“€μ—¬μ“°κΈ°λŠ” 기본적으둜 μ •ν™•ν•©λ‹ˆλ‹€. 이 νŠΉμ •ν•œ κ²½μš°μ—, 당신은 ν•˜λ‚˜μ˜ 맀우 κΈ΄ λ¬Έμž₯을 가지고 μžˆμ§€λ§Œ, #200λ‹Ή λ―Έν™”μ‚¬λŠ” 그것이 κ·Έ 이후에 μ€‘μš”ν•œ λ¬Έμž₯이 μ•„λ‹ˆλΌλŠ” 것을 μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€. beautifierλŠ” μ™„μ „νžˆ ꡬ성 κ°€λŠ₯ν•œ 포맷터가 μ•„λ‹™λ‹ˆλ‹€. 일반적인 경우λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.

이 토둠에 깊이λ₯Ό λ”ν•˜κΈ° μœ„ν•΄ 이 예λ₯Ό μ‚΄νŽ΄λ³΄κ³  ν˜•μ‹μ΄ μ–΄λ–»κ²Œ ν‘œμ‹œλ˜μ–΄μ•Ό ν•˜λŠ”μ§€ μ•Œλ €μ£Όμ„Έμš”.

alpha
    .cooker(function() {
        some
            .thing()
            .should()
            .happen();
        elsewhere
            .some_other_thing()
            .should()
            .happen();
    })
    .thenclose()
beta(zeta);
omega
    .cage(function() {
        random
            .things()
            .should()
            .happen();
        elsewhere
            .some_other_thing()
            .should()
            .happen();
    })
    .thendie()

μž μ‹œ μ‹œκ°„μ„ λ‚΄μ–΄ μ—¬λŸ¬λΆ„μ΄ 보고 μ‹Άμ–΄ ν•˜λŠ” 것에 κ°€κΉŒμ΄ λ‹€κ°€κ°€λŠ” 멋진 λŠλ‚Œμ„ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

μ „μ μœΌλ‘œ! =)

듀여쓰기와 κ΄€λ ¨ν•˜μ—¬ κ·€ν•˜μ˜ μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™μ•„μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

alpha
.cooker(function() {
    some
        .thing()
        .should()
        .happen();
    elsewhere
        .some_other_thing()
        .should()
        .happen();
})
.thenclose()
beta(zeta);
omega
.cage(function() {
    random
        .things()
        .should()
        .happen();
    elsewhere
        .some_other_thing()
        .should()
        .happen();
})
.thendie()

μ—¬κΈ°μ—μ„œ 격언은 μ€‘κ΄„ν˜Έμ™€ λ™μΌν•©λ‹ˆλ‹€. μ‹œμž‘κ³Ό 끝은 λ“€μ—¬μ“°κΈ°κ°€ κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€. λ˜ν•œ Douglas Crockford의 μ½”λ“œ κ·œμΉ™ 은 κ³Όλ„ν•œ λ“€μ—¬μ“°κΈ°λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ •ν™•νžˆ switch λ₯Ό κ·œμ •ν•©λ‹ˆλ‹€.

js-beautifyκ°€ 기본적으둜 crockfordλ₯Ό λ”°λ₯΄μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜κ³ λŠ” μœ„μ˜ λ‚΄μš©μ„ jslintλ₯Ό 톡해 μ‹€ν–‰ν•˜λ©΄ .cooker( 의 λ“€μ—¬μ“°κΈ°κ°€ 잘λͺ»λ˜μ—ˆλ‹€κ³  λΆˆν‰ν•  κ²ƒμž…λ‹ˆλ‹€.

κ·€ν•˜μ˜ μ˜ˆμ—μ„œλŠ” beta(zeta); κ°€ κ°„κ³Όλ˜λŠ” 것이 λ„ˆλ¬΄ μ‰¬μš΄ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.
λ˜ν•œ 일뢀 데이지 체인 λ“€μ—¬μ“°κΈ°κ°€ ν‘œμ‹œλ˜κ³  μΌλΆ€λŠ” ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. beautifierλŠ” μ–΄λ–€ 논리λ₯Ό λ“€μ—¬μ“°κΈ°ν•˜κ³  μ–΄λ–€ 논리λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”μ§€ κ²°μ •ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ 논리λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

λ‚˜λŠ” 이것을 μ—΄μ–΄ λ‘˜ κ²ƒμž…λ‹ˆλ‹€ - 당신이 μ œκ³΅ν•˜λŠ” μ˜ˆμ œλŠ” AngularJS 기반으둜 λ³΄μ΄λ―€λ‘œ 이 κ΄€μš©κ΅¬λŠ” μ‹œκ°„μ΄ 지남에 따라 더 널리 λ°›μ•„λ“€μ—¬μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 그것은 μš°λ¦¬κ°€ 곧 톡합할 수 μžˆλŠ” 것이 μ•„λ‹™λ‹ˆλ‹€.

정말 μ£„μ†‘ν•©λ‹ˆλ‹€. λ“€μ—¬μ“°κΈ°λ₯Ό 잘λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλ“€ 쀑 μ–΄λŠ 것도 λ“€μ—¬ μ“°κΈ°λ‘œλ˜μ–΄ μžˆμ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그리고 beta(zeta); λ₯Ό κ°„κ³Όν•˜μ§€ μ•ŠμœΌλ €λ©΄ λ‹€μŒκ³Ό 같이 빈 쀄을 μ‚¬μš©ν•©λ‹ˆλ‹€.

alpha
.cooker(function() {
    some
    .thing()
    .should()
    .happen();

    elsewhere
    .some_other_thing()
    .should()
    .happen();
})
.thenclose();

beta(zeta);

omega
.cage(function() {
    random
    .things()
    .should()
    .happen();

    elsewhere
    .some_other_thing()
    .should()
    .happen();
})
.thendie();

μ„œλ‘μ— λ§ν–ˆλ“―μ΄ 개인적인 μ·¨ν–₯의 문제라고 μƒκ°ν•©λ‹ˆλ‹€. 특히 μ‹±κΈ€ 라인 체인의 경우 λ“€μ—¬μ“°κΈ°λ₯Ό μ€„μ΄λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—¬λŸ¬ μ€„μ˜ κ²½μš°κ°€ 맀우 λ‚˜μ˜κ³  ν˜Όν•©λœ μŠ€νƒ€μΌμ„ μ‚¬μš©ν•˜λŠ” 것은 끔찍할 κ²ƒμ΄λ―€λ‘œ 항상 λ“€μ—¬μ“°κΈ°λ₯Ό μ€„μ΄λŠ” μ „λž΅μ„ κ³ μˆ˜ν•  κ²ƒμž…λ‹ˆλ‹€.

#485λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 이번 μˆ˜μ •μœΌλ‘œ λ‹€μŒμ€ λ―Έν™”λ₯Ό 톡과할 λ•Œ λ³€κ²½λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€.

(function () {
    'use strict';

    angular
        .module('module', [])
        .directive('appVersion', ['version', function (version) {
            return function (scope, elm, attrs) {
                elm.text(version);
            };
        }])
        .directive('foo', [function () {
            return {};
        }])
        .directive('bar', [function () {
            return {};
        }]);
})();

μ—¬μ „νžˆ 당신이 μ›ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ, beautifierλŠ” 더 이상 ν•¨μˆ˜ 선언을 κ°œν–‰μœΌλ‘œ λ§Œλ“€μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

이 μš”μ²­μ„ +1ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 Promise둜 μž‘μ—…ν•  λ•Œ 특히 νŽΈλ¦¬ν•©λ‹ˆλ‹€.

Promise.resolve()
.then(function() {
  return foo.bar()
})
.then(function() {
  return foo.baz();
})
.then(function() {
 //...
}) //...
//...

이 연결은 μž μ‹œ λ™μ•ˆ 계속될 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 더 λ³΅μž‘ν•œ api 끝점을 μž‘μ„±ν•  λ•Œ λ”μš± κ·Έλ ‡μŠ΅λ‹ˆλ‹€. 맨 μ•„λž˜λ₯Ό λ³Ό λ•Œμ―€μ΄λ©΄ κ°€κΉŒμ΄μ— μžˆλŠ” ν•­λͺ©κ³Ό κ΄€λ ¨ν•˜μ—¬ λ“€μ—¬μ“°κΈ°κ°€ μ™„λ£Œλ˜λŠ” 방식에 λŒ€ν•΄ λŠμž„μ—†μ΄ λ‹Ήν™©ν•˜κ²Œ λ©λ‹ˆλ‹€.

λ‚˜λŠ” λͺ¨λ“  λ‹«λŠ” λ“€μ—¬μ“°κΈ°κ°€ λ‹€μŒμœΌλ‘œ κ°€κΉŒμš΄ 것과 ν•œ μˆ˜μ€€μ˜ 깊이 차이가 λ˜λŠ” 것이 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

:+1:

λ‚˜λŠ” λͺ¨λ“  λ‹«λŠ” λ“€μ—¬μ“°κΈ°κ°€ λ‹€μŒμœΌλ‘œ κ°€κΉŒμš΄ 것과 ν•œ μˆ˜μ€€μ˜ 깊이 차이가 λ˜λŠ” 것이 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ‚˜μ—κ²Œ 이것은 μΆ”κ°€ λ“€μ—¬ μ“°κΈ°κ°€ μ˜€ν•΄μ˜ μ†Œμ§€κ°€ 있고 ꢁ극적으둜 μ‹€μˆ˜μž„μ„ 증λͺ…ν•˜λŠ” ν•΅μ‹¬μž…λ‹ˆλ‹€. λ‚˜λŠ” μ–΄λ–€ μ‚¬λžŒλ“€μ€ μ–΄λ–€ μ˜λ―Έκ°€ μžˆλ‹€κ³  λŠλ‚„ μˆ˜λ„ μžˆλ‹€λŠ” 것을 κΉ¨λ‹«μŠ΅λ‹ˆλ‹€.

Promise.resolve()
  .then(function() {
    return foo.bar()
  })

μ–΄λ–€ μ˜λ―Έμ—μ„œ then() λŠ” Promise.resolve() 와 λΆ€λͺ¨-μžμ‹ 관계가 μžˆμŒμ„ λ°˜μ˜ν•˜λŠ” 것 κ°™μ§€λ§Œ 그것이 사싀이라면 각 후속 then() 에도 ν•΄λ‹Ή 관계가 μžˆμŠ΅λ‹ˆλ‹€. 이전 then() . λ¬Όλ‘  그런 λΆ€λͺ¨-μžμ‹ κ΄€κ³„λŠ” _μ—†κ²Œ_ 있고, 마치 μžˆλŠ” κ²ƒμ²˜λŸΌ λ“€μ—¬μ“°κΈ°ν•˜λŠ” 것은 큰 ν˜Όλž€μ„ μΌμœΌν‚¬ κ²ƒμ΄λ―€λ‘œ 아무도 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 첫 번째 then() λ“€μ—¬μ“°κΈ°λŠ” 큰 것이 μ•„λ‹ˆλΌ _μž‘μ€_ 엉망이 λ©λ‹ˆλ‹€. 단지 μ–΄λ–€ μ‚¬λžŒλ“€μ€ κ·Έ μž‘μ€ ν˜Όλž€μ„ 기꺼이 μ°ΈλŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ 우리 쀑 μΌλΆ€λŠ” λ‹€μŒκ³Ό 같은 경우 μ½”λ“œμ— _아무_ 엉망이 μ—†λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” 그것을 λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ“€μ—¬μ“°κΈ°κ°€ μ œκ³΅ν•˜λŠ” μ‹œκ°μ  ν‘œμ‹œλ₯Ό κ°–λŠ” 것이 쒋을 수 μžˆμ§€λ§Œ 이 경우 λ“€μ—¬μ“°κΈ°μ˜ 의미λ₯Ό μ˜€λ²„λ‘œλ“œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μƒˆ λ²”μœ„λ₯Ό ν‘œμ‹œν•  뿐만 μ•„λ‹ˆλΌ μ—°κ²°λœ λ©”μ„œλ“œλ„ ν‘œμ‹œν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” 이미 μ—°κ²°λœ λ©”μ„œλ“œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” . λ₯Ό 가지고 있으며 . κ°€ μ€„μ˜ ν…μŠ€νŠΈ μ‹œμž‘ 뢀뢄에 있기 λ•Œλ¬Έμ— μ‹€μ œλ‘œ ν•„μš”ν•œ λͺ¨λ“  (μ˜μ‚¬) λ“€μ—¬μ“°κΈ°λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 당신이 κ·Έκ²ƒμ—μ£Όμ˜λ₯Ό κΈ°μšΈμ΄λŠ” ν•œ.

λ”°λΌμ„œ 이것은 _정말_ _ κ·Έλƒ₯ _ 개인 μ·¨ν–₯의 λ¬Έμ œκ°€ μ•„λ‹ˆλΌ 두 μ ‘κ·Ό λ°©μ‹μ˜ μž₯점과 λ‹¨μ μ˜ λ¬Έμ œμž…λ‹ˆλ‹€. (λ¬Όλ‘  개인적인 μ·¨ν–₯이 _ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 일뢀 μ‚¬λžŒλ“€μ€ νŠΉμ • λ‹¨μ μ΄λ‚˜ νŠΉμ • 이점에 λŒ€ν•΄ μ‹ κ²½ 쓰지 μ•Šμ„ 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‹¨μˆœνžˆ "λ‚˜λŠ” _x_λ₯Ό μ„ ν˜Έν•©λ‹ˆλ‹€" λ˜λŠ” "λ‚˜λŠ” _y_λ₯Ό μ„ ν˜Έν•©λ‹ˆλ‹€.)

λ‚˜λŠ” μ—¬λΆ„μ˜ λ“€μ—¬ μ“°κΈ°μ˜ 단점이 μ€‘μš”ν•˜μ§€λ§Œ 이점은 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ κ°€μ§ˆ 수 μžˆλ‹€λŠ” κ²½μš°κ°€ κ°•ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ—°κ²°λœ λ©”μ„œλ“œμ— λŒ€ν•œ μΆ”κ°€ λ“€μ—¬μ“°κΈ°μ˜ 단점:

  • λ“€μ—¬μ“°κΈ°λŠ” 더 이상 λ²”μœ„λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ‹ λ’°ν•  수 μžˆλŠ” μ§€ν‘œκ°€ μ•„λ‹™λ‹ˆλ‹€.
  • λ‹«λŠ” ꡬ두점은 당신이 μ‹€μˆ˜λ₯Ό ν–ˆλ‹€κ³  생각할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜œνƒ:

  • . μžμ²΄κ°€ μ œκ³΅ν•˜λŠ” 것보닀 λ©”μ„œλ“œ 체인에 λŒ€ν•œ 더 큰 μ‹œκ°μ  ν‘œμ‹œλ₯Ό μ–»μŠ΅λ‹ˆλ‹€(κ·ΈλŸ¬λ‚˜ . 둜 ν‘œμ‹œλ₯Ό _do_ )

+1

+1 이것은 jslintμ—μ„œ Expected exactly one space between '{a}' and '{b}' 였λ₯˜λ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€.

μ˜ˆμ‹œ:

gulp.task('changelog', function () {
    return gulp.src('CHANGELOG.md', {
            buffer: false
        })
        .pipe(conventionalChangelog({
            preset: 'angular' // Or to any other commit message convention you use.
        }))
        .pipe(gulp.dest('./'));
});

였λ₯˜:

4   Expected 'buffer' at column 9, not column 13.    buffer: false
5   Expected '}' at column 5, not column 9.  })

μ˜¬λ°”λ₯Έ 방법(jslint의 경우):

gulp.task('changelog', function () {
    return gulp.src('CHANGELOG.md', {
        buffer: false
    })
        .pipe(conventionalChangelog({
            preset: 'angular' // Or to any other commit message convention you use.
        }))
        .pipe(gulp.dest('./'));
});

λ‚˜λŠ” 주둜 promise chainingμ—μ„œ λΆˆν•„μš”ν•œ μΆ”κ°€ λ“€μ—¬μ“°κΈ°λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ 이것을 μ˜΅μ…˜μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것을 맀우 μ„ ν˜Έν•©λ‹ˆλ‹€.

  // fetch `config.json` and then set as constant
  $http.get('config.json').then(function(response) {
    angular.module('myApp').constant('CONFIG', response.data);
  })
  .then(function() {
    angular.bootstrap(document, ['myApp']);
  })
  .catch(function(err) {
    var message = (err && err.data || err && err.message);
    console.error('Unable to bootstrap application.', err);
    window.alert('Unable to bootstrap application.' + (message ? '\n\n' + message : ''));
  });

μΆ”κ°€ λ“€μ—¬μ“°κΈ°λŠ” λ‹€μŒκ³Ό κ°™λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

try {
    // 4 spaces
  } // 2
  catch () {
    // 4
  }

λ“€μ—¬μ“°κΈ° 블둝을 κ°μ‹ΈλŠ” μžμ‹ 토큰이 초기 λ³€μˆ˜μ˜ μƒˆ 쀄에 있으면 μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€.

    .module('module', function() {
      // .module starts on new line, so this block has 2 indents
    })

λŒ€

  angular.module('module', function() {
    // .module is on the same line as the initial variable angular, so this block has 1 indent
  })

κ·ΈλŸ¬λ‚˜ ν•œ 쀄에 λͺ¨λ‘ λ“€μ–΄κ°ˆ 수 μžˆλ‹€λ©΄ 이쀑 λ“€μ—¬μ“°κΈ°κ°€ λ°œμƒν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

(κ·ΈλŒ€λ‘œ μœ„μ˜ λ‚΄μš©μ€ λ‹€μŒκ³Ό 같이 린트/μ˜ˆμƒλ©λ‹ˆλ‹€.)

angular.module('module', function() {
    // double indent
  });

λ‚˜λŠ” 이것을 ν–₯μƒμœΌλ‘œ ν‘œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” 그것이 쒋은 생각이라고 μ£Όμž₯ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 단지 μ‹œκ°„μ΄ 없을 λΏμž…λ‹ˆλ‹€.

λͺ¨λ“  "+1" μ‚¬μš©μžμ™€ λŒ“κΈ€μ„ 단 μ‚¬λžŒλ“€μ€ 자유둭게 ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

+1 μ›ν•˜λŠ”

λ‚˜λŠ” 이것을 μœ„ν•΄ PR을 μ—΄μ—ˆμŠ΅λ‹ˆλ‹€.

https://github.com/beautify-web/js-beautify/pull/927

지속적 톡합이 μ΅œμ’…μ μœΌλ‘œ PR μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•˜λ©΄ 병합할 μ€€λΉ„κ°€ λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

+1 이건 μ‘΄λ‚˜ 지루해

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰