【webpack5】webpack.dev.jsとwebpack.prod.jsを作成して、modeオプションによって実行するファイルを切り替える【web制作】

html/css
この記事は約6分で読めます。
スポンサーリンク

はじめに

前回はmodeオプションを指定してコンパイル方法を切り替えるやり方について説明しました。

まだの方はこちらを参照してください。

今回はwebpack.dev.jswebpack.prod.jsを作成して、modeオプションによって実行するファイルを切り替えるやり方を紹介します。

こちらもmodeオプションを指定してコンパイル方法を切り替えるやり方の1つになります。

webpack公式も推奨とする方法のため、これから導入する方はぜひこちらのやり方を参考にしてください。

対象者
  • modeオプションによって実行するファイルを切り替える方法を知りたい方
  • webpackに興味がある方

webpackの使い方まとめについてはこちら。

web制作をする場合のwebpackのテンプレート紹介についてはこちら。

今回はこちらのサイトを参考にさせていただいています。

それでは説明に移ります。

スポンサーリンク

modeオプションによって実行するファイルを切り替えるメリット

まずはmodeオプションによって実行するファイルを切り替えるメリットについて説明しておきます。

webpackではmodeオプションの違いによって、出力するファイル名や使用するプラグインを変更させる場合が多いです。

そのたびに条件分岐を追加して、「もし開発環境用ならこっち・・・、もし本番環境用ならあっち」というようにしてしまうと非常にプログラムの見通しが悪くなります。

そうならないためにwebpackの公式では以下のようにファイルを分割すること推奨しています。

ファイル名内容
webpack.common.jsどちらの環境でも実行する内容を記述するファイル
webpack.dev.js開発環境で実行する内容を記述するファイル
webpack.prod.js本番環境で実行する内容を記述するファイル

開発環境で実行したい場合は、webpack.dev.js + webpack.common.js を実行、

本番環境で実行したい場合は、webpack.prod.js + webpack.common.js を実行させるという考え方ですね。

スポンサーリンク

ディレクトリ構成

今回のディレクトリ構成は以下です。

test
├ node_modules
├ src
│ └ index.js
├ package-lock.json
├ package.json
├ webpack.common.js
├ webpack.dev.js
└ webpack.prod.js

前回同様最小限の構成にしようと思うのでエントリポイントは指定しません。

指定しない場合は ./src/index.js がデフォルトのエントリポイントとして指定されます。

スポンサーリンク

ファイル内容

index.jsの中身を適当に記述しておきます。

const hello = () => {
  console.log("hello");
};

hello();

共通ファイルのwebpack.common.jsのファイル内容を記述します。

webpack.common.js

module.exports = () => ({

});

最小限の構成にすると特に書くことがありませんね。

続いてwebpack.dev.jswebpack.prod.jsのファイル内容です。

webpack.dev.jswebpack.prod.js を実行する場合に webpack.common.js に取り込ませる必要があります。

こちらを解決してくれるプラグインがwebpack-mergeとなるので、このプラグインを読み込んでいます。

webpack.dev.js

const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common(), {
  mode: 'development',
  devtool: 'source-map',        //  ソースマップを出力させるオプション
});

webpack.prod.js

const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common(), {
  mode: 'production',
});

webpack-mergeプラグインはwebpackをインストールした時に一緒にインストールされるようなので特に個別にインストールする必要はありません。

スポンサーリンク

コンパイルを実行させる

それでは開発環境用と本番環境用でコンパイルを実行させていきましょう。

ターミナルからコマンドを実行させます。

開発環境用でコンパイル

npx webpack --config ./webpack.dev.js

以下のような表示がされれば正しく実行できています。

asset main.js 262 bytes [emitted] (name: main) 1 related asset
./src/index.js 62 bytes [built] [code generated]
webpack 5.61.0 compiled successfully in 129 ms

本番環境用でコンパイル

npx webpack --config ./webpack.prod.js

以下のような表示がされれば正しく実行できています。

asset main.js 21 bytes [emitted] [minimized] (name: main)
./src/index.js 62 bytes [built] [code generated]
webpack 5.61.0 compiled successfully in 334 ms
スポンサーリンク

package.jsonにコマンドを登録する

先ほどのコマンドを毎回ターミナルに打ち込むのは面倒なのでpackage.jsonにコマンドを登録していきましょう。

  "scripts": {
    "dev": "npx webpack --config ./webpack.dev.js",
    "pro": "npx webpack --config ./webpack.prod.js"
  },

コマンドは以下のように変更になります。

// 開発環境用の場合
npm run dev

// 本番環境用の場合
npm run pro
スポンサーリンク

おわりに

以上webpack.dev.jsとwebpack.prod.jsを作成して、modeオプションによって実行するファイルを切り替えるやり方を紹介しました。

いかがだったでしょうか。

実行する環境でファイルを分けることによって非常に見通しが良いプログラムになります。

これから導入する方はぜひこちらのやり方を参考にしてください。

次回はentryオプションを設定する方法について紹介していきます。

コメント

タイトルとURLをコピーしました