webpackを用いたフロントエンド開発環境の構築 その3

〜webpackの設定ファイルを分割する(共通・開発・本番)〜

 

↓YOUTUBEでも解説しています↓

webpack-mergeが必要なので、インストール

npm install --save-dev webpack-merge@5.0.9

 

webpackの設定ファイルを本番用、共通、開発用の3つに分ける

// webpack.common.js
const path = require("path");

module.exports = {
  entry: "./src/js/app.js",
  output: {
    path: path.resolve(__dirname, "public"),
    filename: "js/bundle.js",
  },
};
//  webpack.dev.js
const { merge } = require('webpack-merge');
const commonConfig = require('./webpack.common.js');

module.exports = merge(commonConfig, {
  mode: 'development',
  watch: true, 
});
//  webpack.prod.js
const { merge } = require('webpack-merge');
const commonConfig = require('./webpack.common.js');

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

 

それぞれの設定ファイル(開発用・本番用)に応じたnpm scriptsを用意する(5〜8行目)

webpack コマンドはデフォルトでは webpack.config.js があるとその設定を使用しますが、–config オプションを指定して別の設定ファイルを利用することが可能です

//package.json

{
  "name": "webpack-practice",
  "scripts": {
    "dev": "webpack --config webpack.dev.js",
    "build": "webpack --config webpack.prod.js"
  },
  "devDependencies": {
    "webpack": "^4.43.0",
    "webpack-cli": "^3.3.11",
    "webpack-merge": "^5.0.9"
  },
  "dependencies": {
    "jquery": "^3.5.1",
  }
}

 

それぞれ以下で実行することが可能

npm run devwatchモードで修正を監視

bundle.jsは圧縮されない

npm run buildbundle.jsが圧縮される

※mode(productionとdev)に関する詳細

Mode | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packagi...

 

それぞれ実行する

<npm run dev>

  • app.jsを修正すると、watchモードにより、自動でビルドされる
  • ビルド後、bundle.jsは圧縮されない

<npm run build>

  • ビルド後、bundle.jsは圧縮される

その4はこちら

webpackを用いたフロントエンド開発環境の構築 その4
〜console.logを削除した本番用のファイルを出力 | ソースマップの有効化〜↓YOUTUBEでも解説しています↓console.logを削除した本番用のファイルを出力できるようにするプラグイン(terser-web...

コメント

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