Tslint: рдкреНрд░рд╕реНрддрд╛рд╡: рд╕рд╢рд░реНрдд рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡реГрдХреНрд╖ рд╡рд┐рдиреНрдпрд╛рд╕

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдирд╡ре░ 2017  ┬╖  42рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: palantir/tslint

рдРрд╕реА рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдПрдХ рд▓рд┐рдВрдЯ рдЪреЗрдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдХреЛрдб рдХреЛ рд▓рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрддреНрдкрд╛рджрди рдХреЛрдб рд╕реЗ 'рдХрд┐рд╕реА' рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, 'рдХреЛрдИ рднреА' рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдирдХрд▓реА рдпрд╛ рдирдХрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХреЗрдВред рдпрд╛ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдо рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкрд░ рд░реЗрдЧреЗрдХреНрд╕ рдореИрдЪ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдВрдЯ рдЪреЗрдХ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рд╡рд┐рд░рд╛рд╕рдд" рдХреЛрдб рдпреБрдХреНрдд), рдпрд╛ .tsx рдпрд╛ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдЯ рдЪреЗрдХ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╕реНрдЯреНрд░реЙрдореИрди рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ; рдореИрдВ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЦреБрд▓рд╛ рд╣реВрдВред

рдЕрдиреБрднрд╛рдЧ рд╡рд╕реНрддреБ

{
  "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"]
    }
  }
}

(рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рд╕рд░рдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХрдИ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рднреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП)ред

Declined Enhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣реЛрдВ, рдЬрд┐рд╕ рдХреЛрдб рдХрд╛ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ tslint рдХреЗ рд╕рд╛рде рдЕрднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рднреА 42 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк CLI рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ TSLint рдирд┐рдХрдЯрддрдо tslint.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред "extends" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕рдорд╛рди рдЖрдзрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдХреЛрдгреАрдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдореИрдВрдиреЗ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧреЛрдВ (рдЧрд▓рддреА рд╕реЗ) рдХреЛ рджреЗрдЦрд╛ рд╣реИред

рдЖрдИрдПрдордУ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддреА рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рджреВрд╕рд░рд╛ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

рд╣рдореЗрдВ рдпрд╣ рднреА рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ?

рд╕рдЪ рд╣реИ, рдЖрдк рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред рдпрд╛ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ

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]}
}

3 рддрд░реНрдХ рд╡рд╛рд▓реЗ рдирд┐рдпрдо "foo" рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╡рд╣ рдирд┐рдпрдо c.json , рддреЛ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рд╕рд░рдгреА рдХреЗ рдХреНрд░рдо рдХреЗ рдХрд╛рд░рдг "foo" рдХрд╛ рдорд╛рди 2 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд╣реА рдЖрджреЗрд╢ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдУрд╡рд░рд░рд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рд░реЗрдЧреЗрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЙрд╕ рдХреНрд░рдо рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЬрд┐рд╕рдореЗрдВ 'рд╡рд┐рд╕реНрддрд╛рд░' рдирд┐рдпрдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг:

{
  "rules": {"a": [true, 1]},
  "override": [
    {"match": "test|spec", "rules": {"a": [true, 2]}},
    {"match": "test", "rules": {"a": [true, 3]}}
  ]
}

рдирд┐рдпрдо "рдлреВ" рдХреЗ рд▓рд┐рдП рдорд╛рди 2 рд╣реЛрдЧрд╛ рдЬрдм рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ "рдХрд▓реНрдкрдирд╛" рд╣реЛрддрд╛ рд╣реИ, 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
  • false рдХреНрдпреЛрдВрдХрд┐ рдСрд░реНрдбрд░ a.json/rules -> a.json/override -> 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 : рдирд┐рдпрдо-рдПрдХ, рдирд┐рдпрдо-рджреЛ
  • foo.tsx : рдирд┐рдпрдо-рдПрдХ, рдирд┐рдпрдо-рджреЛ, jsx-рдирд┐рдпрдо
  • foo.js : рдирд┐рдпрдо-рдПрдХ
  • foo.jsx : рдирд┐рдпрдо-рдПрдХ, рдЬреЗрдПрд╕рдПрдХреНрд╕-рдирд┐рдпрдо
  • foo.spec.tsx : рдирд┐рдпрдо-рджреЛ, рдЬреЗрдПрд╕рдПрдХреНрд╕-рдирд┐рдпрдо
  • foo.spec.js : рдХреЛрдИ рдирд╣реАрдВ

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред "rules" рд╕рдорд╛рди рд╕реНрддрд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "extends" , "rulesDirectory" рдХреЗ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рд╣реИ, ...

рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред рдпрджрд┐ рд╣рдо рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рднреА рдУрд╡рд░рд░рд╛рдЗрдб рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдпрд╣ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗрд╡рд▓ рддрднреА рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ,

рдпрд╣ рдлреАрдЪрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕реНрд▓рд┐рдВрдЯ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИ: https://eslint.org/docs/user-guide/configuration#configuration -based-on-glob-patternsред рддреЛ, рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рд╕рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@minomikula рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ ESLint рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рдЦреЛрдЬ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рдЦрдВрдб рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдЙрдирдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ "overrides" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ
  • рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рдПрдХрд╛рдзрд┐рдХ рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ( "files" )ред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ
  • рдЖрдк рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: "excludedFiles"
  • рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдЙрд╕ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВ
  • рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХреЛ рд╣рдореЗрд╢рд╛ рдкреВрд░реЗ рдкрде рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреЗрд╡рд▓ рдмреЗрд╕рдирд╛рдо
  • рдУрд╡рд░рд░рд╛рдЗрдб рдХреЛ рдХреНрд░рдо рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реБрдП
  • рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрдб рдХрд░рддреЗ рд╕рдордп, рдПрдХреНрд╕рдЯреЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреЗрд╕ рдХреЙрдиреНрдлрд┐рдЧ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

    • рдмреЗрд╕.рдЬреЗрд╕рди/рдирд┐рдпрдо

    • рдмреЗрд╕.рдЬреЗрд╕рди/рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕

    • рдПрдХреНрд╕рдЯреЗрдВрдбрд┐рдВрдЧ.рдЬреЗрд╕рди/рд░реВрд▓реНрд╕

    • рдПрдХреНрд╕рдЯреЗрдВрдбрд┐рдВрдЧ.рдЬреЗрд╕рди/рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ TSLint рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ extends рдФрд░ linterOptions рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд╣рдо рд╢рд╛рдпрдж rulesDirectory рдХреЛ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  • рд╣рдо рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ rules рдФрд░ jsRules рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдпрд╛ рд╣рдо рд╡рд┐рд░реЛрдз рдХрд░рддреЗ рдХрд░рддреЗ jsRules рдПрдХ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ **/*.js?(x) рдУрд╡рд░рд░рд╛рдЗрдб?

рд╡рд┐рдЪрд╛рд░ рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ @adidahiya @calebegg @alexeagle @minomikula?

рдУрд╣, рд╡рд╛рд╣, рд╣рд╛рдБ, рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореБрдЭреЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░реНрд╡ рдХрд▓рд╛ рдХреА рднреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред

рдпрд╣ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛! рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╕рдордп рдПрд╕реНрд▓рд┐рдВрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@calebegg рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рд╕рдордп рдорд┐рд▓рдиреЗ рдкрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдВ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред @ajafff рдХреНрдпрд╛ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ ESLint рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдкреАрдЖрд░ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЦреБрд╢ рд╣реИрдВ? рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдмрд╛рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рд╣рдо рдирд┐рдпрдореЛрдВ рдФрд░ jsRules рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХреНрдпрд╛ рд╣рдо рдПрдХ */ .js?(x) рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рдкрдХреНрд╖ рдореЗрдВ jsRules рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ?

рдореЗрд░реЗ рд▓рд┐рдП рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред

@calebegg рдореИрдВ ESLint рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдБред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреАрдУрд╕реА рд▓рд┐рдВрдЯрд░ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ https://github.com/fimbullinter/wotan/tree/master/packages/wotan#overrides

рд╡рд░реНрддрдорд╛рди TSLint API рдореЗрдВ рдПрдХреАрдХрд░рдг рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдорд░реНрдЬ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рддрдм рддрдХ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЬреНрдЮрд╛рдд рди рд╣реЛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред

@calebegg @mitchlloyd @ajafff @alexeagle рдореБрдЭреЗ рдмрд╛рд╣рд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ tslint.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд░рдиреЗ рдкрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд▓рд╛рдн рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЬ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЬрдЯрд┐рд▓ рдПрдкреАрдЖрдИ рдмреНрд░реЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдк рдирд╛рд░рд╛рдЬ рд╣реЛрдВрдЧреЗ?

рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣реЛрдВ, рдЬрд┐рд╕ рдХреЛрдб рдХрд╛ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ tslint рдХреЗ рд╕рд╛рде рдЕрднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрд░реЛрдд рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд╛рд▓рдиреЗ рд╡рд╛рд▓реА рдмрд╣реБрдд рд╕рд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рдпрд╣ рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдмрди рдЧрдпрд╛ рд╣реИ, рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдЙрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ tslint рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдЗрди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреВрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдореМрдЬреВрджрд╛ рдкреИрдЯрд░реНрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЙрд▓реЛрдХреЗрдЯрд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдФрд░ рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓реНрд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИред

@giladgray рдЕрдиреБрд░реЛрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд░рдЦрддреЗ рд╣реИрдВ:

some-dir/
  my-component.ts
  my-component.test.ts

рдЬрдм рд╣рдо my-component.ts рдФрд░ my-component.test.ts рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ "рдиреЗрд╕реНрдЯрд┐рдВрдЧ tslint.json рдлрд╝рд╛рдЗрд▓реЗрдВ" рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреА?

@giladgray рдХреЛрдгреАрдп рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВред рддреЛ 99% рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдРрд╕рд╛ рдХрд░рддреА рд╣реИрдВред tslint рдХреЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ рдЬрд┐рд╕ рднреА рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдЙрд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ рдереАрдВред рдЖрдкрдХреА рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдФрд░ рдЕрджреВрд░рджрд░реНрд╢реА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ/рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрддрдиреЗ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реИрдВ рдХрд┐ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рдорд╛рд░реА рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рдо рдХреЛ рдХрдард┐рди рдмрдирд╛ рд░рд╣реА рд╣реИред

@ohjames рдЪрд▓реЛ рд╡рд┐рд╖рдп рдкрд░

рдпрд╣ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @giladgray рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╣рд┐рдд рдереЗ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ 6 рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рдереАред рдпрд╣ рдЦреБрд▓реЗ рдкреАрдЖрд░ (#3708) рдкрд░ рдЙрдирдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реИ:

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХреЗрдВ, рдпрд╛ рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рди рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдВред рдпрджрд┐ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЖрдкрд╕реЗ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред

@ohjames рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ - рдЬреИрд╕рд╛ рдХрд┐

рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?
@ajafff рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдПрд╕реНрд▓рд┐рдВрдЯ рдХреЗ рд╕рдорд╛рди рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд #1063 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ tslint-microsoft-contrib рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП Vue рдПрдХрд▓-рдлрд╝рд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдмрдо рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ Vue рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдПрдХ TSLint рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╡реЗ рдЯреАрдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдзрд░-рдЙрдзрд░ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - рдРрд╕рд╛ рд╣реЛрдиреЗ рддрдХ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ рд╣рд░ рдПрдХ .vue рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╣реА рдЕрдХреНрд╖рдо рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдФрд░ рдирд┐рдпрдо рд╕рдорд░реНрдерди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ .vue рдФрд░ .ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреАред

рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЖрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо tslintignore рдЕрдиреБрд░реЛрдз рдХреЛ #73 рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рд╕рдлрд╛рдИ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХреЗрдВ?

{
    "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 рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдпрд╛ рд╣рдо рд╡рд┐рд░реЛрдз рдХрд░рддреЗ рдХрд░рддреЗ jsRules рдПрдХ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ **/*.js?(x) рдУрд╡рд░рд░рд╛рдЗрдб?

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░ palantirtech org рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рд╣рдорддрд┐ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

рдмрд╕ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмрд╕ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рдХреЛ рдЖрд╡рд╛рдЬ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рдордиреЗ рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдвреАрд▓ рджреА рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред ):

рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛

рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдирд╛ - рдЗрд╕рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :(

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ! рд╣рдо Vuejs рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдШрдЯрдХ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рд░ рдЬрдЧрд╣ рд╣реИрдВред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрдХреА рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрдирд╛рдо рдХреЛрдб рд╡рд┐рднрд┐рдиреНрди рд▓рд╛рдЗрдирд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд▓рд┐рдВрдЯ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрднреА рднреА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПрдЧреА, tslint рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ @typescript-eslint рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЗрд╕реЗ рдПрд╕реНрд▓рд┐рдВрдЯ рдФрд░ рдЯреАрдПрд╕ рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реИ @typescript-eslint/eslint-plugin-tslint ред рдФрд░ tslint рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдПрд╕реНрд▓рд┐рдВрдЯ рдирд┐рдпрдо/рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрдореНрдкреЗрдЯ рдЯреЗрдмрд▓ рд╣реИред рдПрд╕реНрд▓рд┐рдВрдЯ рд╕реЗрдЯрдЕрдк рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ tslint рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред

рдореИрдВ .gitIgnore... рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП tsLint рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЙрдкрдпреЛрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде, рд▓рд┐рдВрдЯрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреА рд╡рд░реНрддрдорд╛рди рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрддрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдпрд╛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕реЗ
рдПрдХ tslint рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░реВрдЯ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрддрд░ рдкрд░, рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд╕ рдЙрд╕ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди tslint рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред

@redevil рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ test рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдШрдЯрдХ/рд╕реЗрд╡рд╛ рдХреЗ рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ something.test.ts рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВред

рд╕рд╣рдордд - рд▓реЗрдХрд┐рди рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде: (рдЬрд┐рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬрдирд░реЗрдЯрд░ (рд╕реАрдПрд▓рдЖрдИ рд╕реНрдЯрд╛рдЗрд▓) рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
MyComponentDir
--- MyComponentTestsDir
------tslint.test.json
------рдХреБрдЫ.рдЯреЗрд╕реНрдЯ.ts
---mycomponent.component.css
---mycomponent.component.html
---mycomponent.component.ts

рд╡рд┐рдЪрд╛рд░ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рдкреНрд░рд╢рдВрд╕рдХред рд╣рд╛рдБ рдХреГрдкрдпрд╛! рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕ рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд╣реЛрдЧреАред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, tslint рдХреА рдкрджрд╛рд╡рдирддрд┐ рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ _really_ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдореЗрд░реА рдЯреАрдо рдПрд╕реНрд▓рд┐рдВрдЯ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐-рдирд┐рдпрдо + рдкреНрд░рддрд┐-рдлрд╝рд╛рдЗрд▓ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рдШреЛрд╖рдгрд╛: https://medium.com/palantir/tslint-in-2019-1a144c2317a9

@RoystonS рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИ, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ tslint рдореЗрдВ рдЗрддрдиреА рдмрдбрд╝реА рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реА рдЬрд╛рдПрдЧреАред рджреЗрдЦреЗрдВ #4534

рд╣рдо рдПрдХ рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд╣реАрдВ рддреЛ рдореИрдиреЗрдЬ рдХрд░рдиреЗ рдореЗрдВ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mateiacd picture mateiacd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jacob-robertson picture jacob-robertson  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

avanderhoorn picture avanderhoorn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

allbto picture allbto  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ