ぽくつなです

gts で TypeScirpt をすぐ書き始める

gtsGoogle の TypeScirpt style guide と Linter 設定が入った npm package。
googleapis 以下などの Google が公開している各種 TypeScirpt プロジェクトで使われている。

github.com

TypeScript は大変気に入っているけど、新たにプロジェクトを作ってストレスなく開発するまで少し手間がある。

tsc --init して tsconfig.json を書き換えたり以前のプロジェクトからコピペしたり
npm run buildコンパイルするように package.jsonscripts を追加したり
Linter や Formatter の設定も面倒くさい

gts ならこれだけで十分設定されたプロジェクトができあがる。

$ npm init
$ npm install --save-dev gts
$ npx gtx init

生成される tsconfig.json は以下のような形

{
  "extends": "./node_modules/gts/tsconfig-google.json",
  "compilerOptions": {
    "rootDir": ".",
    "outDir": "build"
  },
  "include": [
    "src/**/*.ts",
    "test/**/*.ts"
  ]
}

node_modules 以下の gts/tsconfig-google.json を参照している。

target や lib は es2018 なので node10 以降で動作させる想定だろう。 tsc --init だとデフォルトで有効な esModuleInterop がないのは戸惑うかもしれないが必要に応じて利用側で上書きすればいい。

test や bundle には踏み込まないので、そこは必要に応じて設定する必要がある。
(例えば ts-jest なら npx ts-jest config:init したり、テストをビルドに含める必要ないので src/**/*.test.tsexclude したり)

気になるところ

TSLint

今どき typescript-eslint でしょ、と思ったら置き換える PR が2日前にマージされていた。すぐ次のリリースで eslint に置き換えられる。

github.com

check

npm run check で lint を実行してくれるが、yarn check だと package.json と yarn.lock の検証が実行されてしまうので、yarn でも run を忘れずに yarn run check する必要がある。

これ + husky でコミット時の format & lint を挟めば日々の暮らしには十分だな