export function foo() {
return 123;
}
tslint.json
æ§æã®å ŽåïŒ
{
"extends": ["tslint:latest"],
"rules": {
"indent": {
"options": ["spaces", 4]
}
}
}
tslint
ãšã©ãŒã¯ãããŸããã tslint --fix
ä¿®æ£ã¯ãããŸããã
ãšã©ãŒãã§å ±åãããtslint
ã§é©çšããããä¿®æ£tslint --fix
ã®ã§ãçµæã®ãã¡ã€ã«æ¬¡ã®ããã«ãªããŸãã
export function foo() {
return 123;
}
@adidahiya @ nchen63ã«ãããã®ã³ã¡ã³ããåç §ããŠãã ããã
@ nchen63ããïŒ
ã¿ã-> xã¹ããŒã¹ããã³xã¹ããŒã¹->ã¿ãã¯ä¿®æ£ãããŸãããxã¹ããŒã¹-> yã¹ããŒã¹ã¯ä¿®æ£ãããŸããã
x spaces
ããy spaces
ããããŸãã
ç§ã®ãããžã§ã¯ãã¯2ã€ãš4ã€ã®ã¹ããŒã¹ã®äž¡æ¹ã䜿çšããŠããŸãã ã«ãŒã«x spaces
ãy spaces
ä¿®æ£ãããšéåžžã«äŸ¿å©ã§ãã
ãŸãããµã€ãºéåãä¿®æ£ããããå°ãªããšããšã©ãŒãšããŠå ±åããŠä¿®æ£ã§ããããã«ããããšãæåŸ ããŠããã®åé¡ã«ééããŸããã çŸæç¹ã§ã¯ããµã€ãïŒhttps://palantir.github.io/tslint/rules/indent/ïŒã«èšèŒãããŠããã€ã³ãã³ããµã€ãºã®æ§æã¯å®éã«ã¯äœãããŠããªãããã§ãã
ã¯ãããã®ãã°ãä¿®æ£ããŠãã ããã Angular CLIã¯ããã¡ã€ã«ãŸãã¯ãããžã§ã¯ããçæãããšãã«ã€ã³ãã³ãã¬ãã«ã«2ã€ã®ã¹ããŒã¹ã䜿çšãããã¹ãŠã®åŒçšç¬Šã¯äžéåŒçšç¬Šã§ãã 次ã«ãtslintãå®è¡ããŠããŠãŒã¶ãŒã®tslint.jsonã«åŸã£ãŠããããä¿®æ£ããŸãã åŒçšç¬Šã¯ããŸãæ©èœããŸããïŒç§ã®å¥œã¿ã«å¿ããŠäºéåŒçšç¬Šã«å€æãããŸãïŒãã€ã³ãã³ãã¯2ã¹ããŒã¹ã®ãŸãŸã§ãïŒç§ã¯4ã¹ããŒã¹ã奜ã¿ãŸãïŒã Tslintã¯ãå®éã®TABæåãæ€åºããå Žåã«ã®ã¿ãšã©ãŒãå ±åããŸãããã¹ããŒã¹ã®æ°ããã§ãã¯ããå¿ èŠããããšèããããŸãã
https://github.com/palantir/tslint/blob/master/src/rules/indentRule.tsã§äœ¿çšãããŠããå®è£
ã¯éåžžã«çŽ æŽã§ã x spaces -> y spaces
æ©èœãããšã¯æããªãããã§ã
ããšãã°ã2ã¹ããŒã¹ã®ã€ã³ãã³ãå¹ ãéžæããããšãã次ã®ã³ãŒããæ€èšããŸãã
foo = {
a: {
b: {
c: 'c'
}
},
d: 'd'
}
çŸåšã®å®è£
ã§ã¯ãããããŸã£ãã倱æããããšãã©ã®ããã«ããŠç¥ãããšãã§ããŸããïŒ ã¹ããŒã¹ã®åã·ãŒã±ã³ã¹ã¯æ£èŠè¡šçŸ/ /
æž¡ããŸãã 2ã€ã®ã¹ããŒã¹ã®åæ°ãæ¢ããŠããããã¯åæ Œã§ãã åæ§ã«ããã«ãã¬ãã«ã®ã€ã³ãã³ãã·ããªãªã§ã¯ã4ã€ã®å
é ã®ã¹ããŒã¹ãåæ Œã·ããªãªã«ãªãå¯èœæ§ããããŸããã4ã€ã®ã¹ããŒã¹ã§åäžã¬ãã«ã®ã€ã³ãã³ããéå§ãããšå€±æããã¯ãã§ãã
eslintãšåæ§ã«ãã©ã®ãœãªã¥ãŒã·ã§ã³ã§ãASTããã©ããŒã¹ããå¿
èŠããããšæããŸãïŒhttps://github.com/eslint/eslint/blob/master/lib/rules/indent.jsïŒã ãã®æ¬ ç¹ã¯ã tabs -> spaces
ãŸãã¯spaces -> tabs
ããã©ãŒãã³ã¹ããããã«äœäžããããšã§ãã èšå®ã«åºã¥ããŠå®è£
ãéžæããããšã§åé¿ã§ããŸãããã¿ããšã¹ããŒã¹ãçµã¿åãããŠäœ¿çšââãããšãçŸåšã®å®è£
ã¯å€±æããããšãäºæ³ãããŸãããã®å Žåã¯ãASTããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ã®ã¿ã䜿çšããå¿
èŠããããŸãã
eslintã®å®è£ ã§è¡ãããASTäœæ¥ã®å°ãªããšãäžéšã¯ãtypescriptã®ã©ã€ãã©ãªã§çŽæ¥åŠçã§ãããšæããŸãããããã£ãŠããœãªã¥ãŒã·ã§ã³ãäœæããã®ã¯ããã»ã©é£ãããªãã¯ãã§ãã
çŸåšã®å®è£ ã§ã¯ãããããŸã£ãã倱æããããšãã©ã®ããã«ããŠç¥ãããšãã§ããŸããïŒ
_æè¡çã«_ããå¿
èŠã¯ãããŸããã align
ã«ãŒã«ã䜿çšãããšããã®ãããªã³ãŒããèšè¿°ã§ããªããªããŸãã ãã¡ããã indent
ã«ãŒã«ã§ãASTãæ©ãããšãã§ããŸãã ç§ãæ°ã«ããŠããã®ã¯ã indent
ãšalign
çµã¿åããã«ãã£ãŠãåé¡ã®èª¬æã«æžããããšãéæã§ãããšããããšã ãã§ãã
æŽåã«ãŒã«ã¯ããã®ãããªã³ãŒããæžãããšãé²ããŸãã
è¯ãïŒ ç§ããœãŒã¹ã³ãŒãã調ã¹ãŠãããšããç§ã¯ãããèŠéããŸããã ããããããŒã¯ãè¿ããŸãã TBHãç§ã¯æ¢åã®ã«ãŒã«ã掻çšããŠä»ã®äººãã§ããã ãçŽ æŽã«ä¿ã€ãšããã¢ã€ãã¢ã奜ãã§ãã
åãåé¡ãçºçããŠããŸãã 以äžã®ã«ãŒã«ã¯ãã¹ããŒã¹ã®ä»£ããã«äœ¿çšãããŠããã¿ãããã£ããããŸããã誀ã£ãæ°ã®ã¹ããŒã¹ããã£ããããŸããã 2ãä»ã®æ°å€ã«å€æŽã§ããŸãããããã§ããšã©ãŒã¯çºçããŸããã tslint5.5.0ã䜿çšããŠããŸãã
"indent": [true, "spaces", 2],
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ ïŒèª°ãããŸã ä¿®æ£ã«åãçµãã§ããªãå Žåãç§ã¯ãããè©ŠããŠã¿ãã€ããã§ããïŒ
@mDibyoã¯ããã®ããã«è¡ããŸã
@mDibyoããã«ã€ããŠäœãé²æ©ã¯ãããŸãããïŒ
éšåçãªå®è£ ããããŸãã ãããå®äºããé±æ«ã«PRãç«ãŠãããšããŸã
ãããžã§ã¯ãã§tslint-plugin-prettierã䜿çšããŠããããããªãã©ãŒãããã䜿çšãå§ããŠä»¥æ¥ããã®åé¡ã®åªå 床ãäœããªã£ãŠããããšããããšæããŸãã å°æ¥çã«ã¯ãçµã¿èŸŒã¿ã®æ§æã«prettierã®å ¬åŒãµããŒããè¿œå ããããã«å¿ããŠããã©ãŒãããã«é¢é£ããªãã³ã¢ã«ãŒã«ã«ãã©ãŒã«ã¹ã調æŽããããšããå¯èœæ§ããããŸãã
äžæ¹ãPrettierã¯ãã»ãšãã©ã®ã³ãŒãããã¹ãŠã®è¡ã«åããããã«åªããŠããŸãã
ããªãããããæãŸãªãå Žåã¯ã©ããªããŸããïŒ
å°å·å¹ ã120ã«èšå®ãããšããããããã«ãé床ã«ã³ã³ãã¯ããªããŸãã¯æãŸãããªãã³ãŒããçæãããå¯èœæ§ããããŸãã
ãããžã§ã¯ãã§ã¯120æåã䜿çšããŠããŸãã
ãŸããããã¯ããã«å¥ã®äŸåé¢ä¿ã§ãã éåžžã®TSLintã«ãŒã«ã䜿çšããããšæããŸãã
éåžžã®TSLintã«ãŒã«ã䜿çšããããšæããŸãã
@ glen-84ãããããã§åé¡ãããŸããããã®ãããTSLintãããã¹ãŠã®ãã©ãŒãããèŠåãåé€ããå€éšãã©ãŒããã¿ãŒã«å®å šã«å§ä»»ããå¿ èŠããããšèšã£ãŠããããã§ã¯ãããŸããã Prettierã¯æããã«æèŠãããã誰ããããã䜿çšããããšãéžæããããã§ã¯ãããŸããã ãã®åé¡ã¯ãŸã PRã«éãããŠããŸãã
ãã®åé¡ã¯ã©ããªã£ãŠããã®ã§ããïŒ
ç§ã®åºå ±ã¯é²è¡äžã§ãããå€ãã®å ŽåããŸã æéãå¿ èŠã§ãã @cyberhck
ã§ããããããã«ããŒãžããããšäºæ³ããŠããŸãïŒslightly_smiling_faceïŒ
ããã«æŽæ°ã¯ãããŸããïŒ
ããããã typescript-formatterã®ã¡ã³ããã«ããã€ãã®APIãå
¬éããããã«äŸé Œããããšãã§ããŸããïŒ ããã±ãŒãžã¯ããœãŒã¹ãã¡ã€ã«å
šäœãtslint.json
ãã¡ã€ã«ã®èšå®ã«åŸã£ãŠãã©ãŒããããŸãã
ãã ããTSLintã®ãã£ã¯ãµãŒèšå®ãããŸã掻çšããã«ã¯å©ããå¿ èŠãªå ŽåããããŸãã
åé¡ã¯ãã€ã³ãã³ããµã€ãºããªãã®å Žåã§ã¯ãªããééã£ã空çœæåã䜿çšããå Žåã«ã®ã¿å€±æãå ±åãããããšã§ããããã§ãã
@adidahiyaééã£ãã€ã³ãã³ãæåã䜿çšãããŠãããšããšã©ãŒãå ±åã§ããŸããã ã«ãŒã«ãspaces / 4ã«èšå®ãã次ã®ãããªãã®ãããå ŽåïŒ
export function foo() {
return 123;
}
ãŸã
export function foo() {
<tab>return 123;
}
ãšã©ãŒã¯å ±åãããŸããã å ã®ã³ã¡ã³ãã«ãããšã空çœæåãééã£ãŠããå Žåã¯å ±åãããŸããïŒ
ããã«ã€ããŠäœãé²æ©ã¯ãããŸããïŒ ãã å°ããð
å©èšïŒ Prettierã䜿çšããŸãã
誰ããtslint-eslint-rulesãè©Šã
@jscharett tslint-eslint-rulesã¯ã ter-indent
ã«ãŒã«ã§æ©èœããŸãã æ®å¿µãªãããJSXã€ã³ãã³ãã¯ã«ããŒãããŠããŸãã...
ããã§ä¿®æ£ã®åžæã¯ãããŸããïŒ
ãã®ãã°ã¯v5.10.0ã§ã¯ãŸã ä¿®æ£ãããŠããŸãã
TSLintãPrettierãšåæ§ã«JSã³ãŒãããã©ãŒãããã§ãããšã¯æããŸããã ããã¯è€éãªåé¡ã§ãããPrettierã¯ä»ã®èª°ãããããŸã解決ããŸããã ç¹ã«ãããžã§ã¯ãã§ã¯äž¡æ¹ã®ããŒã«ãåæã«äœ¿çšããããšãå€ãã競åãçºçããå¯èœæ§ãããããããããTSLintã«äŸåããã¹ãã§ã¯ãªããšæããŸã...
ç·šéïŒãã®åé¡ãã©ã®ããã«è€éã§ããããããããç解ããã«ã¯ããã®PRã確èªããããPrettierãœãŒã¹ã³ãŒãã確èªããŠãã ããã ãããã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããè€éãã ãšæããªãå Žåã¯ãPRã§ãã®ãããžã§ã¯ããæ¯æŽããŠãã ããðïŒ
@aervinç§ã¯ããã§å察ããåŸåããããŸãã ç§ã®æèŠã§ã¯ã2ã€ã®ãããžã§ã¯ãã®ç®çã¯ç°ãªããŸãã TSLintã¯æ€èšŒãšããäžèŽããŠããã®ã«å¯ŸããPrettierã¯ãã©ãŒãããã®ã«ããŽãªã«åé¡ãããŸãã ã¯ããTSLintã¯ããã€ãã®ã«ãŒã«ã®ãã©ãŒããããè¡ãããšãã§ããŸããããªã³ã¿ãŒãšããŠã®æå³ãããç®çã¯æ€èšŒã«æ»ããŸãã
Prettierã«äŸåããããšã®åé¡ã¯ããããæèŠãè¿°ã¹ãããŠããããšã§ãã ãã®ã¹ã¿ã€ã«ã«åæããã®ã¯çŽ æŽãããããšã§ãããåæããªãå Žåã¯ã©ããªããŸããïŒ ä»¥åã¯ã¿ããªJSLintã䜿ã£ãŠããŸããããããããšãŠãæèŠãå€ãã£ãã®ã§ã¿ããªäžå¹³ãèšããŸããã 次ã«ãJSHintãšJSCSãç»å ŽããããçšåºŠã®å¶åŸ¡ãå¯èœã«ãªããŸããã ããã§ã @ eslintã®ãããªåŒ·åãªããŒã«ãã§ãããã©ã°ã¢ã³ããã¬ã€ã§åé¡ãèªåçã«ãä¿®æ£ãããããšãã§ããŸãã
Prettierã¯çŽ æŽããããããžã§ã¯ãã ãšç¢ºä¿¡ããŠããŸãããå人çã«ã¯ãããäžæ©åŸéããããã®ãšèããŠããŸãã ãã®ã³ã³ãããŒã«ãç§ãã奪ãã TSLintã¯ã³ãŒãããä¿®æ£ãããå¿ èŠã¯ãããŸããããããåé¡ã§ããå Žåã¯ãåé¡ãšããŠãã©ã°ãç«ãŠãã ãã§ãã ãã®åé¡ãè€éã§ããããšã¯ééããããŸããããeslintã¯ããã解決ããŸããã 以åã¯æ©èœããŠããã«ãŒã«ã ãããå£ãããã«äœãå€ãã£ãã®ã§ããïŒ
@jscharettã
ç§ã¯ãŸããPrettierãæèŠãè¿°ã¹ãŠããããšã«åæããŸãã ç§ã¯ãããPrettierã«ã€ããŠããã奜ãã§ãã ä»ãç§ã®ããŒã ã¯ã誰ã®ãã©ãŒãããã®æèŠãããåççã§ãããã«ã€ããŠè°è«ããå¿ èŠã¯ãããŸããã ç§ãã¡ã¯çãPrettierã«ã€ããŠæå¥ãèšãããšãã§ããŸãïŒç¬ãïŒã
ç·šéïŒ
以åã¯æ©èœããŠããã«ãŒã«ã ãããå£ãããã«äœãå€ãã£ãã®ã§ããïŒ
åé ã®ã³ã¡ã³ãã¯ããã®ã«ãŒã«ãæå³ãããšããã«æ©èœããŠããªãã£ããšç§ã«ä¿¡ããããŸãã
Prettierã¯çŽ æŽããããããžã§ã¯ãã ãšç¢ºä¿¡ããŠããŸãããå人çã«ã¯ãããäžæ©åŸéããããã®ãšèããŠããŸãã ãã®ã³ã³ãããŒã«ãç§ãã奪ãã
ç§ã®çµéšã§ã¯ãPrettierãè¿œå ãããŸã§ã¯ããã©ãŒãããã«ãŒã«ããã现ããå¶åŸ¡ã§ãããšæã£ãŠããŸãã...ãããŠããã©ãŒãããã®ç¹å®ã®æ¹æ³ã«ã€ããŠã¯ããŸãæ°ã«ããªãããšã«æ°ä»ããçŽåŸã«ããããã¯äžè²«ããŠãã©ãŒããããããŠããŸããã ãã以äžå¿é ããå¿ èŠããªããã³ãŒãã®å€èŠ³ã§ã¯ãªããã³ãŒãã«å®è¡ããããããšã«å®å šã«éäžããããšã¯ã倧ããªèªç¥çè² è·ã§ãã
tslintã¯ããã©ãŒãããã®ã«ããŽãªã«åé¡ãããä»ã®ãã®ããã§ã«æ€èšŒããŠããŸãã ããšãã°ãå€æ°åãšæŒç®åã®éã«é 眮ããã©ã±ããã¹ã¿ã€ã«ããŸãã¯ã¹ããŒã¹ãé©çšããŸãã ããã«ãããããããªãããªæèŠã®ãã解決çã«é Œãããšãªããã€ã³ãã³ããæ€èšŒã§ããããšãæãŸããã
è°è«ãæžãããPRãå¢ããå¿ èŠããããŸãã ðð
ã©ãã@ffxsam
ç§ã®ã³ã¡ã³ãã¯äž»ã«åè«ã§ããã ãªããã®åé¡ã¯1幎以äžåã®ãã®ã§ãããé²å±ãèŠãããªãã®ãçåã«æã£ãŠããŸããã 誰ãããªã³ãã£ã³ã°ãšããªãã£ãšã«ã€ããŠè°è«ããŠããããã§ãã
@ffxsamtslintãtséšåã«é¢ãããã®ãªã®ãlintéšåã«é¢ãããã®ãªã®ãã«ã€ããŠè°è«ããããã
ããã¯æå¹ãªãã€ã³ãã§ãã TSLint / ESLintãšéè€ããŠããããã§ãã ããããæ©èœããŠããªãindent
ãªãã·ã§ã³ãããããã®æéãç¥ã£ãŠãã人ã®ããã«å£ããŠãããšããäºå®ã¯æ®ã£ãŠããŸãã TSLintã³ãŒãããŒã¹ã«ç²ŸéããŠãã人ããããä¿®æ£ããã®ãæãéã/æãç°¡åãªããšã®ããã§ã...ïŒ
x spaces
=> y spaces
ä¿®æ£ã«æ祚ããŠãã ããã ããã¯ãåœç€Ÿãéåžžã«å€§ããäŸåããŠããæ©èœã§ãã ãããä¿®æ£ããªãã ãã§ã¯æå³ããããŸããã
@ffxsamç§ã¯ãã®åé¡ãã»ãŒ1幎éèŠãŠããŸãããããããã¯é·ãã§ãããããããªããèŠãããšãã§ããããã«2ã€ã®PRã®è©Šã¿ãããããããŠããã¯ä»ãŸã§ããŸããããŸããã§ãããç§ã¯ãããèŠãç®ããé£ãããšæããŸãããããã¡ã³ããã«ãšã£ãŠã¯ãã¡ããç°¡åãããããŸããããç§ã«ã¯ããããã®å¿èåããããŸãïŒslightly_smiling_faceïŒ
空ã®ãããžã§ã¯ãã§ãåçŸå¯èœ
https://github.com/dimaShin/tslint-reproduce-2814
ããã«ã¡ã¯@dimaShin ãåçŸå¯èœãªãªããžããªãäœæããããã«æéãå²ããŠããã ãããããšã
ããããä¿®æ£ãªãã·ã§ã³ã䜿çšããŠããã®æ©èœãåŸ ã£ãŠããŸãããããã¯ç§ã«ãšã£ãŠã¯åé¡ã§ã¯ãããŸããã ååãã§ãã¯ãããšãã人ã ã¯ã€ã³ãã³ããštslintããã§ãã¯ããããã«prettierã䜿çšããŠããŸããã
ç§ã¯ãããããªãã«ãŽã£ããã ãšèšã£ãŠããããã§ã¯ãããŸãããç§ã«ãšã£ãŠã¯ç¢ºãã«ããã§ã¯ãããŸãããç§ã¯ãŸããã®ç¹å®ã®ãªãã·ã§ã³ã«.editorconfig
ã䜿çšããããã解決ããããåŸã§tslintã«åãæ¿ããããšããå§ãããŸãã
ç¹°ãè¿ãã«ãªããŸãããæ å ±ãè¿œå ããããã«æéãå²ããŠããã ãããããšãããããŸã:)
ã€ã³ãã³ãããã§ãã¯ããããã®æŠç¥ã決å®ããŸãããã åèãŸã§ã«ãeslintã䜿çšããæŠç¥ã¯æ¬¡ã®ãšããã§ãã
ãã®æŠç¥ã¯æ§æã«åºã¥ããŠããŸããã以åã®ã³ã¡ã³ãã«åºã¥ããšãç¹å®ã®æ¹æ³ã§è¡ãåå²ããå¿ èŠããããããããŸãã«ãæèŠãåãããŠããŸãã ã³ãŒããã©ã®ããã«è¡ã«åå²ããããã«é¢ä¿ãªããã€ã³ãã³ãããã§ãã¯ããç°¡åãªæ¹æ³ãææ¡ããŸãã
è°è«ããããã€ãã®è¿œå äºé ïŒ
@stifflerusãŸããã«ãŒã«ã¯{}ãããã¯ã®ãªãif / for / arrowé¢æ°ã§æ©èœããå¿ èŠããããŸã
@maximelkinããªããäžããäŸã¯2è¡ç®ã«ã€ã³ãã³ããããŠããŸãããïŒ ææ¡ãããæŠç¥ã倱æããå Žæã®äŸãæããŠããã ããŸããïŒ
if(this) that(); //okay because it's all one line
if(this)
that(); //also okay because the second line is indented
let x = () => f(); //okay because it's all one line
let y = () =>
f(); // I have not seen any code but like this but it would be okay
ãããä¿®æ£ããããçŽ æŽãããã§ãããã
ã€ã³ãã³ãã«ãŒã«ã®é©çšããŸã æ©èœããŠããªãã®ã§ãåºæ¬çãªããšã¯ä¿¡ããããŸããã
ããã§ã2018幎ã«ãã®ãããªtsã³ãŒãããªã³ãããæ¹æ³ã¯ãããŸãããïŒ
const x = {
a: 1,
b: 2,
}
ç§ã®ããã«åã
./.eslintrc.ts.js
ïŒ
module.exports = {
'parser': 'typescript-eslint-parser',
'parserOptions': {
'ecmaVersion': 6,
'sourceType': 'module',
'ecmaFeatures': {
'jsx': true,
}
},
'plugins': [
'react',
],
'rules': {
'indent': ['error', 2],
},
}
yarn eslint --no-eslintrc --config ./.eslintrc.ts.js --ext .tsx src
è§åºŠã®ã€ã³ãã³ãåé¡ã«ã€ããŠç§ãèŠã€ãã解決çã¯ã次ã®ã¹ãããã§ãããããã«è¿œå ããããšã§ãã
npm install --save-dev tslint-plugin-prettier prettier tslint-jasmine-rules
tslint.jsonãç·šé->
`" rulesDirectory "ïŒ[
"node_modules / codelyzer"ã
"node_modules / tslint-plugin-prettier"ã
"node_modules / tslint-jasmine-rules / dist"
]ã
"extends"ïŒ "tslint-plugin-prettier"ã
ãã«ãŒã«ãïŒ{
ãããããããïŒæ¬åœã
//ããã«å¿
èŠãªã«ãŒã«ãè¿œå ããŸã `
ãããŠpackege.jsonã«è¿œå ->
"ã"ããããã "ïŒ{
ãsingleQuoteãïŒtrueã
"printWidth"ïŒ140ã
ãåãïŒæ¬åœã
ãbracketSpacingãïŒtrueã
"arrowParens"ïŒ "åžžã«"ã
"ããŒãµãŒ"ïŒ "typescript"
}ã
ããã¯ãã»ãšãã©ã®äººãæ¥åžžçã«äœ¿çšããŠããæ©èœã§ãã ãã®åé¡ããã£ãšæ³šç®ãããã°å¹žãã§ãã
ã¿ããªãtslint-eslint-rulesãæäŸããter-indentãªãã·ã§ã³ã䜿çšã§ããŸãã
"ter-indent"ïŒ[trueã4ã{"SwitchCase"ïŒ1}]
ããã¯ç§ã®ããã«åããã 也æ¯ïŒ
@hiteshaleriyaã¯ç§ããã°ããã®éç§ã®ãããžã§ã¯ãã§æã£ãŠãããã®ã§ãããå®éã«ã¯ãšã©ãŒãä¿®æ£ããŠãããããã ããããé»ãããŠããŸã...ãããç§ã®tslint.json
ã§ãïŒ
{
"extends": "tslint-config-airbnb",
"rules": {
"ter-indent": ["error", "spaces", 4],
"no-unused-vars": ["warn"],
"no-multi-spaces": false,
"no-console": false,
"max-line-length": false,
"import-name": false
}
}
èŠåããšã©ãŒãçºçãããã«çµäºããé¢é£ããäŸã次ã«ç€ºããŸãã
function retrieveAndSetConfig(): Promise<any> {
return new Promise((resolve, _) => {
// ^ 2 spaces, expected 4
const ghe = new GHEUtils();
// ^ 4 spaces, expected 8
// ...
}
ãŸããã¿ãã䜿çšãããŠããå Žåããšã©ãŒã¯è¡šç€ºãããŸããïŒãã ãã4ã€ã®ã¹ããŒã¹ãååšããå Žåã¯ä»æ§ã«ããå¯èœæ§ããããŸããïŒïŒã
@SpencerKaiser以äžã«ç€ºãããã«ãter-indentã«ãŒã«ãæŽæ°ããŠããã次ã®ããšãè©ŠããŠãã ããã
"ter-indent": [true, 4]
ç§ã¯ããªãã®äŸãè©ŠããŸããããããŠããã¯ç§ã®çµããã«æåŸ éãã«åããŠããŸãïŒãšã©ãŒãåŒãèµ·ãããŸãïŒã
@hiteshaleriyaããã«è¿äºããããŠããããšãïŒ ãã®ãããæåŸ
ã©ããã«ãšã©ãŒãã¹ããŒãããããã«ãªããŸããïŒðïŒãã --fix
ãšã©ãŒãä¿®æ£ããŠããŸããã äœãæ¡ã¯ïŒ
@ SpencerKaiser--fixã³ãã³ãã2åå®è¡ããŠã¿ãŠãã ããã æåã¯æåã®è¡ã ããã€ã³ãã³ããã2åç®ã¯æ®ããã€ã³ãã³ãããŸãïŒãµã³ãã«ã³ãŒãã®å ŽåïŒã å¥åŠã«æããŸãããæ©èœããªãå Žåã¯åé¡ãå ±åããŠãã ããã
@hiteshaleriyaãªã®ã§ãããã€ãã®èŠ³å¯çµæ...ããäžåºŠå®è¡ããå¿
èŠã¯ãããŸããn/4
çŽn
ã¯ã¹ããŒã¹ã®ã€ã³ãã³ãã®é·ãã§ãããããžã§ã¯ãã§æãã€ã³ãã³ããããè¡Â¯\ _ïŒãïŒ_ /¯
æçµçã«ãã¹ãŠãçµããåŸã次ã®ãããªåºæ¬çãªã€ã³ãã³ããšã©ãŒãã¹ãããããŠããããã§ãã
class Something {
function myFunc() {
const myThing = {
wat: 1,
wattt: 5, // 9 spaces, expected 12
};
}
}
const
ïŒ17è¡ç®ïŒã®ã€ã³ãã³ãã¬ãã«ã0ã¹ããŒã¹ã«å€æŽãããšã --fix
çç¥ãããšãã«ãã¹ããŒã¹ã®ããè¡ãé€å€ããŠãæ®ãã®ãšã©ãŒã®ãã©ã°ãç«ãŠãããŸãã
ERROR: 17:1 ter-indent Expected indentation of 8 spaces but found 0.
ERROR: 18:1 ter-indent Expected indentation of 4 spaces but found 12.
ERROR: 20:1 ter-indent Expected indentation of 0 spaces but found 8.
--fix
ã®å Žåãæåã®ãã¹ã¯æ¬¡ã®ãšããã§ãã
const myThing = {
wat: 1,
wattt: 5,
};
ãããŠ2çªç®ã®ãã¹ïŒ
const myThing = {
wat: 1,
wattt: 5,
};
èã??
@shubichç§ã¯åãããšãããããšã«ãªã£ã...
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
@MaKCbIMKoç§ãç解ããŠããéããããŒã å šäœãeslint visit typescript-eslintã®çµ±åã«ç§»è¡ããè¿ãå°æ¥tslintã¯éæšå¥šã«ãªããããä»ã®ãšãããã®ã«ãŒã«ãç¡èŠããïŒãŸãã¯tslint-config-prettierã䜿çšããïŒã®ãšåããããè¯ãã§ãããã ïŒ
ãã®ã¿ã¹ã¯ã®è€éããšãããžã§ã¯ãã®æ¹åæ§ã®å€æŽã«ããçµäºïŒïŒ4534
typescript-eslintã®ESLintã«ãŒã«ã¯ç§ã«ãšã£ãŠå®ç§ã«æ©èœããŸãïŒïŒ4534ãåç §ïŒïŒ
module.exports = {
"env": {
"browser": true,
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2019,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
"project": "./tsconfig.json",
},
"plugins": ["@typescript-eslint"],
"rules": {
"@typescript-eslint/indent": ["error", 2] // or ["error", "tab"]
}
}
tslint-config-prettierã§ãã®åé¡ãã©ã®ããã«è§£æ±ºããã
ãªã³ã¯ãèŠã€ãããŸããã
ð€ããŒãé³ïŒ ðTSLintã¯éæšå¥šã§ãðãããŠtypescript-eslintã«åãæ¿ããå¿ èŠããããŸãïŒ ð€
ðãã®åé¡ã¯ããã以äžã®äžå¿ èŠãªè°è«ãé²ãããã«ããã¯ãããŠããŸãã ããããšãããããŸããïŒ ð
PS tslint-config-prettier -TypeScriptã_ãã©ãŒããã_ããããã«ãTSLintãªã©ã®_linters_ã®äœ¿çšãåæ¢ããŠãã ããã ããã¯ã Prettierãªã©ã®_formatter_ã䜿çšããæ¹ãé©åã§ãã
æãåèã«ãªãã³ã¡ã³ã
åãåé¡ãçºçããŠããŸãã 以äžã®ã«ãŒã«ã¯ãã¹ããŒã¹ã®ä»£ããã«äœ¿çšãããŠããã¿ãããã£ããããŸããã誀ã£ãæ°ã®ã¹ããŒã¹ããã£ããããŸããã 2ãä»ã®æ°å€ã«å€æŽã§ããŸãããããã§ããšã©ãŒã¯çºçããŸããã tslint5.5.0ã䜿çšããŠããŸãã