〜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 dev | watchモードで修正を監視 bundle.jsは圧縮されない |
npm run build | bundle.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...
コメント