June 10, 2018
今さらながら TypeScript で静的型付けに入門したくなったので、サクッと素振り環境を作ってみた。
cheezenaan-sandbox/frontend_boilerplate: Docker + Webpack
docker-compose run --rm yarn install
docker-compose up
yarn install
落ちたりつらいyarn
コマンドも Docker コンテナ上で叩く(Mac 上で Docker 動かすと I/O 遅くてつらいけど)docker-compose run --rm node yarn add -D webpack webpack-cli webpack-serve
webpack-dev-server
の後継らしい webpack-serve
を導入してみた。
TypeScript さえビルドできればいいので余計な Loader とかプラグインを入れてないからかもしれないけど webpack.config.js
がわりとスッキリしていてよい。
docker-compose run --rm node yarn add -D typescript ts-loader
docker-compose run --rm yarn tsc --init
生成された tsconfig.json
で Strict Type-Checking Options
と Additional Checks
をすべて有効にしておく。
TSLint を使うか ESLint に TypeScript のパーサーを突っ込んで使うか選択肢があるらしいんだけど、 ESLint のほうが設定できるルールが多いらしいので後者を採用(要調査)。
Vue.js 向けの ESLint プラグインを公式が用意しているのも、なにげに評価高い。
vuejs/roadmap: 🗺️ Roadmap for the Vue.js project
docker run --rm node add -D eslint eslint-conifig-airbnb-base eslint-plugin-import typescript-eslint-parser eslint-plugin-typescript
React(JSX) 抜きで普遍的に使える構成にしたかったので eslint-config-airbnb
ではなく eslint-config-airbnb-base
を導入した。
eslint-plugin-typescript
はおまけ。
docker run --rm node add -D prettier eslint-config-prettier eslint-plugin-prettier
問答無用で入れる。 ESLint と併存させるとより幸せになれる。
eslint-config-prettier
は ESLint 上で Prettier と競合するフォーマット関連のルールを無効にしてくれるeslint-plugin-prettier
は Prettier のルールを ESLint が読み込んで、 ESLint 上で Prettier を実行してくれる// .eslintrc
{
"env": {
"browser": true
},
"extends": ["airbnb-base", "plugin:prettier/recommended"],
"parser": "typescript-eslint-parser",
"plugins": ["typescript", "prettier"],
"rules": {
"no-undef": "off",
"no-unused-vars": "off",
"import/extensions": "off",
"import/no-unresolved": "off",
"import/prefer-default-export": "off",
"prettier/prettier": "error"
}
}
prettier
以外に rules
に追加しているのは以下:
"no-undef"
: typescript-eslint-parser
で未対応なので無効化"import/extensions"
, "import/no-unresolved"
: import
するときに .ts
および .tsx
を解釈してくれないので無効化"import/prefer-default-export"
: 1 ファイルで 1 つだけ export const
するときに不便なので消した