webpackが全く分からん

webpackが全く分からん

題そのままです。
VueやExpressで簡単にアプリ開発してましたが、如何せん初心者の域を脱却できないでいます。
特に理解できない、webpackについて書いていきます。

webpack、ハァ?

どうやら自分の同じ悩みを抱える初心者が多いようです。

www.i-ryo.com

上の記事にあったスライドがすごく分かりやすい!

Node.jsの特性

昔々JavaScriptはブラウザでしか使用されない言語だったそうです。
それがJavaScriptだけでアプリ開発を行いたい欲望が生まれ、
ブラウザに留まらない広範囲な適用が求められました。

当時モジュールが読み込めない欠点をCommonJSが改善し、
CommonJSはmodule機能とサーバーサイドでも適用できるようになります。

そしてNode.jsを誕生し、爆発的ヒット。
Node.jsを使って様々なパッケージが開発され、それらを管理するためにnpmが活躍します。

ふむふむ...ここまでは分かるぞ...

zenn.dev

Webpackの紹介が難しい

CommonJSで作られていたパッケージがどうやらサーバーサイドでは使用できたものの、
以前までのようにブラウザでは適用できない。これを可能にするためのビルドツールとして、
産み落とされた代表例がwebpackです。

Node.jsの歴史

うーん...

Node.jsでは可読性の向上や機能毎の開発などにより、
様々なJSファイルが散りばめられています。

  • Expressで雛形を使った際によく見かけるpug(jade)やejs、hbs
  • CSSを効率的よく書けるように拡張したSASS
  • みんな大好きAngular、React、Vueなどのフレームワーク
  • AltJS関連のCoffeeScript、TypeScript

これらのファイルも結局最後は一つのindex.jsにして、
HTMLファイルからまとめたindex.jsが読み込まれます。

つまり・・・

JSファイルで書かれた多数のモジュール関係を明確化して、
依存関係を綺麗にして、結果一つのファイル(=bundle)にまとめます。
このbundleを生成するまでをビルドとします。
このビルドをしてくれるツールの代表例がwebpackなのです。

繋がってきたぞ・・・!

webpackの機能

Webpackに中身でどんな役割・仕事をしているかを4つに分割して紹介。

Entry

Entryに指定したファイルを基準として依存関係が改善されます。
Entry以外のファイルを読み込む際に、Entryに合わせる為、
Entryが依存するファイルを読み込みます。

Loader

JavaScript以外のファイルもJSコンパイルして処理できます。

Plugin

ファイルをまとめる以外の処理をしてくれます。
cssやhtmlとして出力したり、JSファイルの圧縮など。

Output

まとめたJSファイル(=bundle)に関する出力先・方法。

結論

実際動かしてみないと本質的にはよう分からん。

参考文献

webpack

elsur.xyz

TypeScriptが流行っているけどあんま知らんので

qiita.com

SASSあんまり知らんので

webdesignday.jp