generated at
webpackとbabelの呪い、そしてTypeScriptへようこそ
webpackとbabelはモダンなJavaScriptを書いている人なら知っている、もしくは使ったことがあると思う
ちなみに僕はこの二つが好きではない
理由は言わずもがな、設定ファイルがカオスであり、ドキュメントありでもHello Worldすら満足にHTMLに表示できないからである
この二つが必要なのは結局ES20xxをES5にトランスパイルしないと満足できない人達がいるからだ
だけどwebpackもbabelも正直バカバカしいほど設定が大変で、俺は設定ファイルじゃなくてアプリを作りたいんだよとブチギレることは必至である
というわけで僕はいまTypeScript( tsc )とBrowserifyしか使っていない
正直な話、tscにガッツリ依存する分jsよりtsのほうが開発を始めやすいと思う(flow?知らない子ですね…)
TypeScriptの良さはまたあとで書くけど(TypeScriptは過去最高のプログラミング言語だと思う)、デフォルトのコンパイラである tsc がかなりシンプルに出来ているのを紹介したい
百聞は一見にしかず?
tsconfig.json
{ "compilerOptions": { "module": "commonjs", "target": "es2015", "sourceMap": true, "outDir": "dist", "jsx": "react" }, "exclude": [ "node_modules" ], "include": [ "src/**/*.ts", "src/**/*.tsx" ] }
とりあえずTypeScriptを始めたい人はこれをコピペすればいいとおもう
src/ *.ts(x) ファイルを作ればそれでおk
コンパイルはnpm scriptでやる
package.json
{ "scripts": { "build": "tsc", "browserify": "browserify ./dist/index.js -o ./public/js/index.js" }, "devDependencies": { "typescript": "*", "browserify": "*" } }
必要なのはこれだけ
npm run build dist/ にjsが生成される。なぜかReactの tsx もちゃんと js にコンパイルされている
npm run browserify でブラウザ用の統合jsファイルができる
正直webpackの画像やcssもまとめてビルドするという思想はあまり共感できない
CSSModuleはけっこう絶許感がある
babel-pollyfillも、正直最近のESの新機能は別に…というものばかりなので使わなくていいと思っている
TypeScriptに class async/await があるのでもうそれでいいやとなっている
Object.values とかは確かに使えないけど、別にいうほど使わないし、必要だったら lodash を使えばいい
これを読んでnext.jsの良さはwebpack/babelから開放されてReactを使えることだと書いてあってなるほどと思った