見出し画像

モジュールハンドラWebpackとは何かをEnvaderで学んだ

React開発環境でなんとなく使っているWebpackというものがさっぱりわからなかったので勉強してみました。

Webpackとは

Node.jsのJavaScript環境においてファイルなどを束ねる役割を持つモジュールハンドラ。という説明がされています。

モジュールハンドラって?

モジュールハンドラでググるとWebpackが出てくる盥回し状態ですが、要するにHTMLやCSS、jsファイルや画像といったモジュールをひとまとめにしてくれる仕組みです。
昔はこういうJavaScriptを取りまとめる仕組みがなかったので開発がめちゃくちゃめんどくさかったそうです。

Webpackを使う意味

  • 必要なファイルを自動で結合してくれる。

  • JavaScriptモジュールをブラウザで扱えるようになる。

  • 依存関係などを気にせず開発することができる。

  • コード数が減るので可読性も向上しする。

  • リクエスト回数が減るのでサーバーの負担も減る。

  • pluginも豊富。

Node.jsでJavaScript扱うからにはなくちゃ困るくらいの勢いです。

Installしてみましょう

以降はEnvaderの仮想環境で作業します。
まずはnpmの初期化が必要です。
適当なプロジェクトに見立ててディレクトリを作成しそのディレクトリ内に移動します。

mkdir tekitoupj
cd tekitoupj
# npm初期化
npm init -y

そしてインストールします。

npm install --save-dev webpack webpack-cli

webpack-cliもインストールしないとwebpackは使用できません。

とりあえず実行して見るためのファイル・ディレクトリ構造

このような構成でディレクトリとファイルを作成します。

tekitoupj
├── dist
│   ├── bundle.js
│   └── index.html
├── package-lock.json
├── package.json
├── src
│   ├─ index.js
│   └─ modules
│    └─helloworld.js
└── webpack.config.js

Hello Wordしてみる

srcディレクトリの下のhelloworld.jsを編集します。

export const helloWorld = (message) => {
  console.log(message);
};

次にsrcディレクトリのindex.jsを編集します。

import { helloWorld } from './modules/helloWorld.js';

helloWorld("Hello World");

【おまじない】webpack.config.jsの設定

modeはとりあえず開発環境developmentとします。

const path = require('path');

module.exports = {
  mode: 'development',
  entry: `./src/index.js`,
  output: {
    filename: "bundle.js",
    path: path.join(__dirname, 'dist')
  }
};

package.jsonの設定

scriptsという箇所を若干変更します。
devの末尾に--watchを追加することでコマンド入力せずにバンドルを実行できるようになります。

"scripts": {
    "dev": "webpack --mode development --watch",
    "build": "webpack --mode production"
  },

コンパイルの実行

ここまで間違いがなければコンパイルできるはずです。
間違っていれば教えてくれるのでよーくエラーコードみて修正すれば必ず動きます。

npm run dev

運良く(?)コンパイルできました。

コード引用:Webpackの使い方

まとめ

一通り実行してみることで、なんとなーくwebpackの仕組みがわかりました。
とはいえHello worldしただけで完全に理解できたわけではないので使っていく中で身につけたいと思います。

参考資料

これらの記事を参考にさせていただきました。


過去にまとめたNode関連記事


この記事が気に入ったらサポートをしてみませんか?