June 10, 2018
今さらながら TypeScript で静的型付けに入門したくなったので、サクッと素振り環境を作ってみた。
cheezenaan-sandbox/frontend_boilerplate: Docker + Webpack
docker-compose run --rm yarn install
docker-compose upyarn install 落ちたりつらいyarn コマンドも Docker コンテナ上で叩く(Mac 上で Docker 動かすと I/O 遅くてつらいけど)docker-compose run --rm node yarn add -D webpack webpack-cli webpack-servewebpack-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-typescriptReact(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 するときに不便なので消した