ãªã³ããããŠããã³ãŒãããã¹ãã³ãŒãã§ãããã©ããã«åºã¥ããŠãæ¡ä»¶ä»ãã§ãªã³ããã§ãã¯ãå®æœãããå ŽåããããŸãã ããšãã°ãå®å šã§ã¯ãªããããæ¬çªã³ãŒããããanyããçŠæ¢ããããšæããŸãã ãã ãããã¹ãã§ã¯ããanyãã¯ããµãŒãã¹ã®åœã®å®è£ ãŸãã¯æš¡æ¬å®è£ ãæäŸãããããã©ã€ããŒãã¡ãœãããåŒã³åºãããšãã§ããããã«ãã£ã¹ããããããã®ã«åœ¹ç«ã¡ãŸãã ãŸãã¯ãããšãã°ããã¹ããšæ¬çªã³ãŒãã§ç°ãªãã¡ãœããã®ã»ãããçŠæ¢ãããå ŽåããããŸãã
ç§ãææ¡ããã®ã¯ããã¡ã€ã«åã®æ£èŠè¡šçŸã®äžèŽã«åºã¥ããŠlintãã§ãã¯ãæ¡ä»¶ä»ãã§æå¹ã«ããæ¹æ³ã§ãã ããã¯ãç¹å®ã®ãã£ã¬ã¯ããªïŒããšãã°ããã¬ã¬ã·ãŒãã³ãŒããå«ãïŒããŸãã¯.tsxãã¡ã€ã«ã.d.tsãã¡ã€ã«ãªã©ã®lintãã§ãã¯ããªãã«ããå Žåã«ã圹ç«ã¡ãŸãã
ããã«ããã€ãã®æ§æã¹ãããŒãã³ã®ã¢ã€ãã¢ããããŸãã ç§ãææ¡ãåãä»ããŠããŸãã
{
"rules": {
"no-any": {"other": true},
"no-console":
{
"test": [true, "warn", "error"],
"other": [true, "log", "warn", "error"]
}
},
"sections": {
"test": ".*\\.spec\\.ts$"
}
}
ããã®ä»ãã¯ãã©ã®æ£èŠè¡šçŸãšãäžèŽããªããã®ã§ãã ããã¯ããªãç°¡æœã§ãããã«ãŒã«ã»ã¯ã·ã§ã³ã®èªã¿ãããã¯å°ãæãªããããšæããŸãã
{
"rules": {
"no-any": true,
"no-console": [true, "log", "warn", "error"]
},
"override": {
"match": ".*\\.spec\\.ts$",
"rules": {
"no-any": false,
"no-console": [true, "warn", "error"]
}
}
}
ïŒè€æ°ã®ãªãŒããŒã©ã€ããå¯èœã«ããããã«ãããã¯ããããé åã§ããå¿ èŠããããŸãïŒã
ãã¹ããšæ¬çªã³ãŒããå¥ã
ã®ãã£ã¬ã¯ããªã«çœ®ãå Žåããã®ãããªæ©èœã¯å¿
èŠãããŸããã CLIåŒæ°ãšããŠæ§æãã¡ã€ã«ãæå®ããªãå ŽåãTSLintã¯æãè¿ãtslint.json
ãŸãã ãããã£ãŠããã©ã«ãããšã«ç°ãªãèšå®ãè¡ãããšãã§ããŸãã "extends"
ã䜿çšãããšãåãåºæ¬æ§æã䜿çšããŠãç¹å®ã®ã«ãŒã«ã®ã¿ããªãŒããŒã©ã€ãã§ããŸãã
å€ãã®Angularãããžã§ã¯ããšReactãããžã§ã¯ããã察å¿ããæ¬çªã³ãŒããšåããã£ã¬ã¯ããªã«ãã¹ããé 眮ããŠããããšãããããŸããã å人çã«ã¯ããã¯æªãç¿æ £ã ãšæããŸãã ç§ã¯ååãªæ°ã®äººã ãïŒå¶ç¶ã«ïŒæ¬çªã³ãŒãã®ãã¹ãããã·ã³ãã«ãã€ã³ããŒãããã®ãèŠãŠããŸããã
IMOãææ¡ããæ©èœã¯ãå€ãã®è€éããè¿œå ããŸãã å®è£
ã¯ããã»ã©é£ãããªããããããŸããããèšå®ãã¡ã€ã«ãèªãã§ç解ããã®ãé£ãããªããŸãã
ãããå®è£
ããå Žåã¯ã2çªç®ã®ææ¡ããå§ãããŸãã
ãŸããæ§æãæ¡åŒµãããšãã«ã©ã®ããã«æ©èœãããã«ã€ããŠã説æããå¿ èŠããããŸãã ãªãŒããŒã©ã€ãã¯ã©ã®é åºã§é©çšãããŸããïŒ
確ãã«ãã³ãŒããåé¢ããããšãã§ããŸããã人éå·¥åŠã«æªåœ±é¿ãåãŒããŸãã ã©ã¡ãã
src/
tslint.json
a/
b/
c/
test/
tslint.json (extends ../src)
a/
b/
c/
ãããŠc/foo.spec.ts
ã¯import {symbol} from '../../../a/b/c/foo';
ãªããã°ãªã
ãã®ãã¹ã¯ããã¡ã€ã«ãããªãŒã®éåžžã«æ·±ããšããã«ããããšãå€ãã¢ããªããžããªã§ã¯éããªããŸãã
ãŸãã¯ããªããæã£ãŠãã
a/
src/
tslint.json
test/
tslint.json (extends ../src)
b/
src/
tslint.json
test/
tslint.json (extends ../src)
c/
src/
tslint.json
test/
tslint.json (extends ../src)
tslint.jsonãã¡ã€ã«ãå€ãããŸã
ãªãŒããŒã©ã€ãã®ãããã¯ã«ã€ããŠïŒãªãŒããŒã©ã€ãã¯ãã«ãŒã«ãé©çšãããã®ãšåãé åºã§é©çšããããšæããŸãã ãããäœã§ããããããããããã¥ã¡ã³ããèŠã€ãããŸããã§ããããçŽæçã«ã¯æ¬¡ã®ããã«ãªããšæããŸãã
// a.json
{"rules": {"foo": [true, 1]}}
// b.json
{"rules": {"foo": [true, 2]}}
// c.json
{
"extends": ["a.json", "b.json"],
"rules": {"foo": [true, 3]}
}
ã«ãŒã«ãfooãã®åŒæ°ã¯3ã«ãªããŸãããã®ã«ãŒã«ãc.json
ã«ãªãå Žåããextendsãé
åã®é åºã«ããããfooãã®å€ã¯2ã«ãªããŸãã
ãªãŒããŒã©ã€ãã«ã€ããŠã¯ãåãé åºãé©çšãããããšãæåŸ ããŸãã 'extends'ã«ãŒã«ãèæ ®ãããé åºãèæ ®ããŠãæäŸãããæ£èŠè¡šçŸã«äžèŽããæåŸã®ãªãŒããŒã©ã€ãã䜿çšããããšã¯ç§ã«ã¯çã«ããªã£ãŠããŸãã åäžãã¡ã€ã«ã®äŸïŒ
{
"rules": {"a": [true, 1]},
"override": [
{"match": "test|spec", "rules": {"a": [true, 2]}},
{"match": "test", "rules": {"a": [true, 3]}}
]
}
ãã¡ã€ã«ãã¹ã«ãspecããå«ãŸããŠããå Žåã¯ã«ãŒã«ãfooãã®å€ã2ããtestããå«ãŸããŠããå Žåã¯3ããã以å€ã®å Žåã¯1ã«ãªããŸãã ïŒæããã«ãããã¹ããã¯æåããçç¥ãããæ¹ãããã®ã§ãããŸãæçšãªãªãŒããŒã©ã€ãã®ã»ããã§ã¯ãããŸããããããªãã¯ãã®èããç解ããŸãïŒ
ããã¯çã«ããªã£ãŠããŠãããªãã®è³ªåã«çããŸããïŒ
@calebeggèæ ®ãã¹ãä»ã®ãšããžã±ãŒã¹ãããã€ããããŸãã
// a.json
{
"rules": {"foo": [true, 1]},
"override": {"match": "test|spec", "rules": {"foo": [true, 2]}}
}
// b.json
{
"extends": "./a.json"
"rules": {"foo": false}
}
æåŸ ãããçµæã¯äœã§ããïŒ
2
ãªãŒããŒã§ããããã a.json/rules
> - b.json/rules
- > a.json/override
a.json/rules
-> a.json/override
-> b.json/rules
ããã false
b.json/rules
ããã§ãåãã§ãããæåŸ ãããçµæã¯äœã§ããã
// c.json
{
"rules": {"foo": [true, 1]},
"override": {"match": "test|spec", "rules": {"foo": false}}
}
// d.json
{
"extends": "./a.json"
"rules": {"foo": {"options": 2}},
"override": {"match": "test|spec", "rules": {"foo": {"options": 3}}}
}
ãã ã©ã³ãã ãªèãïŒãã¿ãŒã³ãé çªã«äžèŽãããïŒéšåçã«ïŒåã®äžèŽããªãŒããŒã©ã€ãããªãã®ã¯ãªãã§ããïŒ
{
"rules": { // same as "*"
"rule-one": true,
"rule-two": true
},
"*.js?(x)": { // we could get rid of "jsRules" with this
"rule-two": false
},
"*.{t,j}sx": {
"jsx-rule": true
},
"*.spec.*" {
"rule-one": false
}
}
ããã€ãã®äŸïŒ
foo.ts
ïŒã«ãŒã«-1ãã«ãŒã«-2foo.tsx
ïŒã«ãŒã«1ãã«ãŒã«2ãjsxã«ãŒã«foo.js
ïŒã«ãŒã«1foo.jsx
ïŒã«ãŒã«1ãjsxã«ãŒã«foo.spec.tsx
ïŒã«ãŒã«2ãjsxã«ãŒã«foo.spec.js
ïŒãªããããèšå®å
ã®ã©ãã«çœ®ããããããŸããã "rules"
ãšåãã¬ãã«ã§ã¯ãæžãããããªããŸããã "extends"
ã "rulesDirectory"
ã..ãšåãã¬ãã«ã§ããããããŠãŒã¶ãŒãæ··ä¹±ãããå¯èœæ§ããããŸãã
ãã1ã€ã®åé¡ã¯ãæ§æã®æ¡åŒµã§ãã åºæ¬æ§æããã®ãã¹ãŠã®ãªãŒããŒã©ã€ããé©çšããŠãããçŸåšã®æ§æããã®ãªãŒããŒã©ã€ããé©çšãããšãç解ããã®ãããªãé£ãããªããŸãã
ãŸããã³ãŒããããè€éã«ãªããŸãã çŸåšãæ§æã¯è§£æäžã«ããŒãžãããŸãã ãã®ææ¡ã§ã¯ãæçµçãªæ§æã¯ããã¡ã€ã«åãããå Žåã«ã®ã¿ããããŸãã
ããã«ã¡ã¯ã
ãã®æ©èœã¯çŽ æŽãããã§ãããã Eslintã¯ãã®æ©èœããµããŒãããŠãããšæããŸãïŒ https ïŒ//eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patternsã ãããã£ãŠãæ··ä¹±ãé¿ããããã«ãæ§æãšã»ãã³ãã£ã¯ã¹ã¯åãã«ããããšãã§ããŸãã
@minomikulaã©ããããããšãããããŸããã 以åã«ESLintããã¥ã¡ã³ããæ€çŽ¢ããŸãããããã®ã»ã¯ã·ã§ã³ãèŠã€ãããŸããã§ããã
圌ãã®ã¢ãããŒãã¯çã«ããªã£ãŠããŸãã èŠçŽããïŒ
"overrides"
ã»ã¯ã·ã§ã³ã«ã¯ããªãŒããŒã©ã€ãã®é
åãå«ãŸããŠããŸã"files"
ïŒãæå®ã§ããŸãã ãããã®1ã€ãäžèŽããå Žåãæ§æãé©çšãããŸã"excludedFiles"
ãã®åäœãTSLintã«ç§»æ€ããéã«ã¯ãèæ ®ãã¹ãããšãããã€ããããŸãã
extends
ãšlinterOptions
ã確å®ã«ç¡å¹ã«ããå¿
èŠããããŸãrulesDirectory
ãçŠæ¢ããããšæããŸãrules
ãšjsRules
ãèš±å¯ããŸããããããšã**/*.js?(x)
ãªãŒããŒã©ã€ããåªå
ããŠjsRules
ãå»æ¢ããŸããïŒèããã³ã¡ã³ã@ adidahiya @ calebegg
ãããããããããããã®ã¢ãããŒãã¯ç§ã«ã¯åççãªããã§ãã ç§ãå è¡æè¡ãæ¢ãã¹ãã ã£ãã
ããã¯çŽ æŽãããè¿œå ã«ãªãã§ãããïŒ eslintã¢ãããŒãã¯ããã¹ããã¡ã€ã«ã®äžéšã®ã«ãŒã«ãæ¡ä»¶ä»ãã§ç¡å¹ã«ããå Žåã«æé©ã§ãã
@calebeggæéãããã°ããããé²ããäºå®ã¯ãããŸããïŒ
ã¯ãã絶察ã«ããã«åãçµã¿ãããšæããŸãã @ajafff ESLintã¢ãããŒãããå§ããŠãPRãç¹°ãè¿ãããšã«äžè¬çã«æºè¶³ããŠããŸããïŒ ãããšããæåã«è©±ãåãã¹ãèšèšäžã®è³ªåããããšæããŸããïŒ
ãªãŒããŒã©ã€ãã§ã«ãŒã«ãšjsRulesãèš±å¯ããŸããããããšã* / .jsïŒïŒxïŒãªãŒããŒã©ã€ããåªå ããŠjsRulesãå»æ¢ããŸããïŒ
éæšå¥šã«ããããšã¯ç§ã«ã¯çã«ããªã£ãŠããŸãããã©ã¡ãã«ããŠãããŸã匷ãã¯æããŸããã
@calebeggESLintã¢ãããŒãã§å€§äžå€«ã§ãã ç§ã¯POCãªã³ã¿ãŒã©ã³ã¿ã€ã ã«éåžžã«ãã䌌ãæŠå¿µãå®è£ ããŸããhttps://github.com/fimbullinter/wotan/tree/master/packages/wotan#overrides
çŸåšã®TSLintAPIã¯ã解æäžã«ãã¹ãŠã®æ§æãããŒãžãããããçµ±åã¯é£ããå ŽåããããŸãã ããã¯ããã¡ã€ã«ã®ååãããããŸã§å»¶æããå¿ èŠãããããã¹ãŠã®ãã¡ã€ã«ã«å¯ŸããŠå®è¡ããå¿ èŠããããŸãã
ããã¯ç¢ºãã«APIã®é倧ãªå€æŽã§ãã
@calebegg @mitchlloyd @ajafff @alexeagle tslint.json
ãã¡ã€ã«ããã¹ãããŠå€éšæ§æããªãŒããŒã©ã€ããããããããã®æ©èœã«ã¯ã»ãšãã©ã¡ãªããããããŸããã ãã®æ©èœã¯çŸåšãã§ã«æ©èœããŠãããè€éãªAPIãã¬ãŒã¯ã¯å¿
èŠãããŸããã ãã®ãªã¯ãšã¹ããæåŠããå Žåãæ°åã害ããŸããïŒ
ãã¹ãã¯ãããã§èª¬æããåé¡ã解決ããŸããã å€ãã®äººã¯ããã¹ãããã³ãŒããšåããã£ã¬ã¯ããªæ§é ã§ãã¹ãã
ãœãŒã¹ãšåããã£ã¬ã¯ããªã«ã¹ããã¯ãã¡ã€ã«ãé 眮ãããããžã§ã¯ãããããããããŸãã ããã¯å€ãã®ç°å¢ã§ã®ãã¹ããã©ã¯ãã£ã¹ã«ãªããŸãããAngularCLIã¯ãã®ãããªãããžã§ã¯ãæ§é ãçæããŸããtslintæ§æãã¡ã€ã«ããã¹ãããããšã¯ããããã¹ãŠã®äººã ã«ãšã£ãŠçŸå®çã§ã¯ãªããšæããŸãã
ç§ã®ãããžã§ã¯ãæ§é ã¯ãªã³ãã£ã³ã°ããŒã«ã«ãã£ãŠæ±ºå®ãããã¹ãã§ã¯ãªãããšã«åæããŸãã 代ããã«ããªã³ãã£ã³ã°ããŒã«ã¯äžè¬çãªæ¢åã®ãã¿ãŒã³ããµããŒãããå¿ èŠããããŸãã ãã¹ããšãœãŒã¹ãã¡ã€ã«ãåãå Žæã«é 眮ããã®ãäžè¬çãªãã¿ãŒã³ã§ãã
@giladgrayèŠæ±ãããå€æŽã¯ããŠãŒã¶ãŒã次ã®ããã«ãã¹ããã¡ã€ã«ãšæ¬çªãã¡ã€ã«ã
some-dir/
my-component.ts
my-component.test.ts
my-component.ts
ãšmy-component.test.ts
ç°ãªãã«ãŒã«ãå¿
èŠãªå Žåãã tslint.json
ãã¡ã€ã«ã®ãã¹ããã¯ãã®ãŠãŒã¹ã±ãŒã¹ã«ã©ã®ããã«å¯ŸåŠããŸããïŒ
@giladgrayè§åºŠã¬ã€ãã©ã€ã³ã§ã¯ããã¹ãããã¡ã€ã«ãšäžç·ã«é 眮ããããšãæšå¥šããŠããŸãã ãããã£ãŠãè§åºŠã®ãããããžã§ã¯ãã®99ïŒ ããããè¡ããŸãã tslintãåŸæ¹ã«ãããããç§ãåãçµãã ãã¹ãŠã®è§åºŠãããžã§ã¯ãã«åé¡ããããŸããã ããªãã®æåŸã®ã³ã¡ã³ãã¯æ··ä¹±ããŠè¿èŠçŒçã§ãã ãã®ä¿¡ããããªãã»ã©æçšãªææ¡ãåãå ¥ããããªã/åãå ¥ããããªãã®ã§ããã°ãããªãã¯ããŸãã«ãä¿å®çãããŠããã®ãããªéèŠãªãããžã§ã¯ãã«ã€ããŠç§ãã¡ã®ããã«æ±ºå®ãäžãããšãã§ããªããšæããŸãã ãã®åé¡ã¯ãç§ãã¡ã®è§åºŠã®ãããããžã§ã¯ãã®äœæ¥ãäœå¹Žã«ãããã£ãŠå°é£ã«ããŠããŸããã
@ohjamesãããã¯ã«ãšã©ãŸããå人çãªæ»æã«åããã®ãé¿ããŸãããã 誰ããèªåã®ãããžã§ã¯ããç¶æããã®ã«é©ããŠããªãããšã瀺åããããšã¯ãOSSã«åœ±é¿ãäžããæ¹æ³ã§ã¯ãªãã確ãã«ç§ãã¡å šå¡ãããã§äž»åŒµããŠããããšãå©ããã€ããã¯ãããŸããã
äžèšã®ããã«ãã¹ããããæ§é ã«é©åããªããã¡ã€ã«ã®ãªãŒããŒã©ã€ããå¿ èŠãªã®ã¯çã«ããªã£ãŠããŸãã @giladgrayã®ã³ã¡ã³ãã¯ããã®åé¡ã«é¢ãã掻åã6ãæ以äžãªãã£ãããšãèãããšããã®å€æŽã«ã³ãã¥ããã£ã®å€§ããªé¢å¿ããŸã ãããã©ãããå€æããããšãç®çãšããŠããããã«æãããŸãã ããã¯ããªãŒãã³PRïŒïŒ3708ïŒã«é¢ãã圌ã®ã³ã¡ã³ãã«ãã£ãŠå ·äœçã«èšŒæãããŠããŸãã
ãããè¿œæ±ãããå Žåã¯ããã®ãã©ã³ããæŽæ°ããŠç¢ºèªã§ããããã«ããããé¢é£æ§ããªããªã£ãå Žåã¯éããŠãã ããã 2é±é以å ã«ãé£çµ¡ããªãå Žåã¯ããããçµäºããŸãã
@ohjamesã³ã¡ã³ããåæ€èšããããšããå§ãããŸã- è¿°ã¹ãããã«ãå人çãªæ»æã¯ããããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã®ã©ãã§ãããªããå©ããã€ããã¯ãããŸããã 誰ããåªãããä¿¡é Œæ§ãé«ããæ©èœãè±å¯ãªãœãããŠã§ã¢ãäœæããããã«æåãå°œãããŠããŸããã人ã ãæ»æããããšã¯æ±ºããŠããã«è²¢ç®ããŸããã
ãã®ãããã¯ã«é¢ããæŽæ°ã¯ãããŸããïŒ
@ajafffãèŠçŽã³ã¡ã³ãã§ææ¡ããã¢ã€ãã¢ã¯åççã§ãããããŸããŸãªããŒãºãæºãããŠããŸãã eslintãšåãã»ãã³ãã£ã¯ã¹ã䜿çšããããšã¯è¯ãæ¹æ³ã§ãã
é¢é£ããïŒ1063ã«ã€ããŠã³ã¡ã³ãããããã«ãç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãtslint-microsoft-contribã䜿çšãããšãçŸåšãäžéšã®ã«ãŒã«ã§Vueåäžãã¡ã€ã«ã³ã³ããŒãã³ããçæããããšã§ãã ããã¯Vueã®åé¡ãŸãã¯TSLintã®åé¡ã®ããããã§ããå¯èœæ§ãããããããã®ããŒã ã¯ç¹å®ã®åé¡ã®ä¿®æ£ã«åãæãããã©ããã¯ããããŸãããåé¡ãçºçãããŸã§åé¡ã®ããã«ãŒã«ãç¡å¹ã«ããããšã¯ãããã»ã©é¢åã§ã¯ãªãåçŽãªåé¿çã®ããã«æããŸãã ãã¹ãŠã®åäžã®.vueãã¡ã€ã«ã«åãdisableãã£ã¬ã¯ãã£ããè¿œå ããã«ãŒã«ã®ãµããŒããå€æŽããããšãã«ããããã¹ãŠã®å Žæã§æŽæ°ããå¿ èŠãããå Žåãšæ¯èŒããŠã ãŸãããããžã§ã¯ãã.vueãã¡ã€ã«ãš.tsãã¡ã€ã«ã«åå²ããããšãæå³ããããŸãããããã¯ãéåžžã«æ±ãã«ããæ§é ã«ãªããŸãã
ãã®æ©èœã®å°å ¥ã«è³æã§ãããªãŒããŒã©ã€ãã«ãã£ãŠãã¹ãŠã®ã«ãŒã«ãå®å šã«ç¡å¹ã«ããããšã§ãïŒ73ã®tslintignoreãªã¯ãšã¹ãããããã«è§£æ±ºã§ãããããããŸããã
{
"files": "./src/test-data/*.ts",
"reset": true // Resets tslint.json to {}
}
tslint-microsoft-contribã¯çŸåšãäžéšã®ã«ãŒã«ã§Vueåäžãã¡ã€ã«ã³ã³ããŒãã³ããçæããŠããŸã
ããð@ millimoose tslint-microsoft-contribã«åé¡ãå ±åããŠããã ããŸãããïŒ
@ JoshuaKGoldberg-ç§ã¯ãã§ã«@vuejs / vue-cliã§ãã®ãã°ã®è©³çŽ°ãªã¬ããŒããäœæããŸãããããã¯æãé©åãšæãããŸãã ïŒãè€è£œåŸ ã¡ããšããŒã¯ãããŠããã®ã§ã倧ããããšã§ã¯ãªããšæããŸããïŒããã§ãã£ã€ã ã鳎ããåæ©ãšããŠèšåããŸããã ããã¯ãé²åãããšã³ã·ã¹ãã ã§åç©«ã§ããããããŠåç©«ãããããªãã®ã§ããããã¯ãä»ã®äººã®ãã°ãå®éã«ããã¯ããããšãªããé害ãåé¿ããã®ã«ååãªæè»æ§ãåããããŒã«ã®è°è«ã«ãªãã¯ãã§ãã
ãã®åé¡ã«é¢ããæŽæ°ã¯ãããŸããïŒ
ãã®åé¡ã¯çŸåšãææ¡ãå¿ èŠããšããŠãã©ã°ãç«ãŠãããŠããŸããã httpsïŒ //github.com/palantir/tslint/issues/3447#issuecomment -344020834ã«ãã§ã«ææ¡ããããšæããŸããïŒ
@RoystonS @ajafffã®ææ¡ã§ã¯ã察åŠãã¹ãããã€ãã®ã«ãŒãºãšã³ãã«ã€ããŠèšåããŠããŸãã
ãã®åäœãTSLintã«ç§»æ€ããéã«ã¯ãèæ ®ãã¹ãããšãããã€ããããŸãã
- ãªãŒããŒã©ã€ãã§
extends
ãšlinterOptions
ã確å®ã«ç¡å¹ã«ããå¿ èŠããããŸã- ãããã
rulesDirectory
ãçŠæ¢ããããšæããŸã- ãªãŒããŒã©ã€ãã§
rules
ãšjsRules
ãèš±å¯ããŸããããããšã**/*.js?(x)
ãªãŒããŒã©ã€ããåªå ããŠjsRules
ãå»æ¢ããŸããïŒ
ããã¯ããªãéèŠãªæ©èœã§ãããããå ã«é²ãåã«ãããã«ã€ããŠpalantirtechçµç¹ã®äººã ããã®ã³ã³ã»ã³ãµã¹ãå¿ èŠã§ãã
èªåã§ããã«åºããããã ãã§ããã®çš®ã®æ©èœã«èå³ã瀺ããããšæããŸãã
æçµçã«ãæ¬çªã³ãŒãã«åœ±é¿ãäžããããã€ãã®ãªã³ãã£ã³ã°ã«ãŒã«ãç·©åãããããã©ã®ããã«è¡ãããããèŠãŠã¿ãŸãããã ïŒïŒ
ãã®æ©èœãèŠããã§ã
ãµãã¹ã¯ã©ã€ã-ãããå¿ èŠã§ãã
ç§ã¯ããããšãŠãå¿ èŠã§ã:(
ãã£ã¡ãäžç·ïŒ ç§ãã¡ã¯Vuejsã§typescriptã䜿çšããŠãããåäœãã¹ããã¡ã€ã«ã¯ãã¹ããã£ã¬ã¯ããªã§ã¯ãªããã³ã³ããŒãã³ãã®ãœãŒã¹ã³ãŒãã®ããããšããã«ãããŸãã
ãã®æ©èœããã²ã芧ãã ãããçŸåšããã®åé¡ãåé¿ããããã«ãã³ãã³ãã©ã€ã³ã®lintã匷調衚瀺ãããã®ãšã¯ç°ãªãlintingãšã©ãŒãvscodeã匷調衚瀺ãããå°ãäžå®å®ãªèšå®ã䜿çšããŠããŸãã
ãã®æ©èœãå®è£
ãããããšã¯ãªãã ãããšç§ã¯åŒ·ãçã£ãŠããŸããtslintã¯äžè¬çã«ç©æ¥µçã«ä¿å®ãããŠããªãããã§ãã @typescript-eslint
ã«åãæ¿ããããšããå§ãããŸããããã¯ãeslintãããžã§ã¯ããštsãããžã§ã¯ãã®äž¡æ¹ããå®å
šã«ãµããŒããããŠããã @ typescript-eslint / eslint-plugin-tslintã䜿çšãããšç§»è¡ããããŸã§ã«ãªãç°¡åã«ãªããŸãã ãããŠãtslintãšå¯Ÿå¿ããeslintã«ãŒã«/ä»ã®éžæè¢ãåããäºææ§ã®ããããŒãã«ããããŸãã Eslintã®ã»ããã¢ããã¯é«åºŠã«ã«ã¹ã¿ãã€ãºå¯èœã§ãããããtslintã«åºå·ããæå³ã¯ãããŸããã
gitãªããžããªã.gitIgnore ...å ã®ãã¡ã€ã«ã«äœ¿çšããæŠå¿µãtsLintã«ãŒã«ã«é©çšããããšãææ¡ããŸãã ç¹å®ã®ãµããã£ã¬ã¯ããªããªã³ããããšãã®ããªãŒããŒã©ã€ããã¡ã€ã«ãšãšãã«ããªã³ã¿ãŒãžã®ã³ã³ããã¹ããšããŠã®çŸåšã®éå±€äœçœ®ã®äœ¿çšã 次ã«ãä»»æã®ãã£ã¬ã¯ããªã¬ãã«ã§ä»»æã®æ§æãå«ãããé€å€ããããèšå®ãããã§ããŸãã
äŸãã°
tslintæ§æã¯ã«ãŒãã«é
眮ããããœãŒã¹ã³ãŒãæ§é ã®ç¹å®ã®ã¬ãã«ã§ãå¥ã®åäœãå¿
èŠã«ãªããŸãããã®ãµããã£ã¬ã¯ããªã®ã«ãŒãã«ããæ¡åŒµåtslintãã¡ã€ã«ã§ãªãŒããŒã©ã€ãããã ãã§ãã
@redevill test
ãã©ã«ãã«ãã¹ããæžãã®ã«åœ¹ç«ã¡ãŸãã ãã ããã³ã³ããŒãã³ã/ãµãŒãã¹ã®åããã©ã«ããŒã§ã®something.test.ts
ãšããŠã®æžã蟌ã¿ãã¹ãã¯1ã€ã§ã¯ãããŸããã
åæããŸãã-ãã ãããã€ããŒãªå€æŽããããŸã:(ãã³ãã¬ãŒããžã§ãã¬ãŒã¿ãŒïŒCLIã¹ã¿ã€ã«ïŒã§èªååã§ããŸãïŒ
MyComponentDir
--- MyComponentTestsDir
------ tslint.test.json
------ something.test.ts
--- mycomponent.component.css
--- mycomponent.component.html
--- mycomponent.component.ts
ã¢ã€ãã¢ã¯ãŸã æ©èœããå¯èœæ§ããããŸãã
ãã®ææ¡ã®å€§ãã¡ã³ã ã¯ãããé¡ãããŸãïŒ ç§ã®å¥œã¿ã¯ãªãŒããŒã©ã€ãã®æŠå¿µã§ãã
ãšããã§ãtslintã®éæšå¥šã®çºè¡šãèãããšããã®æ®µéã§ãã®ãããªå€§ããªå€æŽãè¡ãããããšã¯_æ¬åœã«_æ³åã§ããŸãããç§ã®ããŒã ã¯ããã§ã«ã«ãŒã«ããš+ãã¡ã€ã«ããšã®ãªãŒããŒã©ã€ãæ©èœãåããeslintã«ç§»è¡ããŠããŸãã
åè¿°ã®çºè¡šïŒ https ïŒ
@RoystonSã¯åºæ¬çã«æ£ããã®ã§ããã®æç¹ã§ã¯ãã®ãããªå€§ããªæ©èœã¯tslintã«è¿œå ãããŸããã ïŒ4534ãåç §
Angularãããžã§ã¯ãã䜿çšããŸãã ãªãŒããŒã©ã€ãã®æŠå¿µãå¿ èŠã§ãã ããã§ãªããã°ã管çããã®ã¯èŠçã§ã
æãåèã«ãªãã³ã¡ã³ã
ãã¹ãã¯ãããã§èª¬æããåé¡ã解決ããŸããã å€ãã®äººã¯ããã¹ãããã³ãŒããšåããã£ã¬ã¯ããªæ§é ã§ãã¹ãã