TSLint 普段使っている最小限の設定

プライベートで何か作ったりするときの TSLint config についてまとめておく。

tslint.json

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts",
      "coverage/lcov-report/*.js"
    ]
  },
  "rulesDirectory": ["tslint-plugin-prettier"],
  "rules": {
    "no-default-export": true,
    "interface-name": false,
    "ordered-imports": true,
    "jsx-no-lambda": false,
    "object-literal-sort-keys": false,
    "prettier": true
  }
}

rules

create-react-app のデフォルトからあまり触っていないが、以下の rules を弄っている。

  • no-default-export: named export を強制するため true にしている
  • interface-name: 大文字 I から始まる interface 名を禁止
  • ordered-imports: インポート順をアルファベット順にして探しやすいように true
  • jsx-no-lambda: Query Component pattern などで使うので false
  • object-literal-sort-keys: object の key はアルファベット順よりも重要度で並べたり、分類ごとにまとめたりしたいので false
  • prettier: tslint-plugin-prettier をインストール($ yarn add -D tslint-plugin-prettier)し "rulesDirectory": ["tslint-plugin-prettier"] を追加して true にするとプロジェクトの .prettierrc(.json) が効くようになる

メンバーの多いプロジェクトでは、さらに必要に応じてrulesを追加したり無効化したりする