gts
は Google の TypeScirpt style guide と Linter 設定が入った npm package。
googleapis 以下などの Google が公開している各種 TypeScirpt プロジェクトで使われている。
TypeScript は大変気に入っているけど、新たにプロジェクトを作ってストレスなく開発するまで少し手間がある。
tsc --init
して tsconfig.json
を書き換えたり以前のプロジェクトからコピペしたり
npm run build
でコンパイルするように package.json
の scripts
を追加したり
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.ts
を exclude
したり)
気になるところ
TSLint
今どき typescript-eslint でしょ、と思ったら置き換える PR が2日前にマージされていた。すぐ次のリリースで eslint に置き換えられる。
check
npm run check
で lint を実行してくれるが、yarn check
だと package.json と yarn.lock の検証が実行されてしまうので、yarn でも run を忘れずに yarn run check
する必要がある。
これ + husky でコミット時の format & lint を挟めば日々の暮らしには十分だな