https://github.com/enginespot/js-beautify-sublime μ ν΅ν΄ μ΄κ²μ μ¬μ©
μμλλ:
.foo()
.bar();
μ€μ :
.foo()
.bar();
λ¬Έμ λ₯Ό μ€λͺ νκΈ° μν΄: νμ¬ λ€μ¬μ°κΈ°λ λ€μκ³Ό κ°μ EOFλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
});
});
})();
κ·Έκ²μ λμκ² μ€λ₯μ²λΌ 보μ΄λ©° μμΈμ μ°Ύλλ‘ μ λν©λλ€.
ꡬμ±κ³Ό ν¨κ» μ 체 μ λ ₯ λ° μμ μΆλ ₯μ μ 곡ν μ μμ΅λκΉ? μμ μ‘°κ°(μμ§ν λΆμ νν΄ λ³΄μ΄λ)μ λ«λ λΈλ‘κ³Ό μ°κ΄μν€λ λ° μ΄λ €μμ κ²ͺκ³ μμ΅λλ€. κ°μ¬ ν΄μ!
μ΄ λΆμΌμ λ§μ κ²λ€μ΄ κ·Έλ¬νλ―, μ΄κ²μ λ¬Όλ‘ κ°κ΄μ μΈ μ§μ€μ΄λΌκΈ° 보λ€λ κ°μΈμ μ·¨ν₯κ³Ό μ΅κ΄μ λ¬Έμ μ λλ€.
μ²λ¦¬ ν λ€μκ³Ό κ°μ΄ νμλ μ μμ΅λλ€.
(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 μ΄κ±΄ μ‘΄λ μ§λ£¨ν΄
κ°μ₯ μ μ©ν λκΈ
μ΄ μμ²μ +1ν΄μΌ ν©λλ€. μ΄κ²μ Promiseλ‘ μμ ν λ νΉν νΈλ¦¬ν©λλ€.
μ΄ μ°κ²°μ μ μ λμ κ³μλ μ μμ΅λλ€. νΉν λ 볡μ‘ν api λμ μ μμ±ν λ λμ± κ·Έλ μ΅λλ€. 맨 μλλ₯Ό λ³Ό λμ―€μ΄λ©΄ κ°κΉμ΄μ μλ νλͺ©κ³Ό κ΄λ ¨νμ¬ λ€μ¬μ°κΈ°κ° μλ£λλ λ°©μμ λν΄ λμμμ΄ λΉν©νκ² λ©λλ€.
λλ λͺ¨λ λ«λ λ€μ¬μ°κΈ°κ° λ€μμΌλ‘ κ°κΉμ΄ κ²κ³Ό ν μμ€μ κΉμ΄ μ°¨μ΄κ° λλ κ²μ΄ μ€μνλ€κ³ μκ°ν©λλ€.