Webpack Example: Difference between revisions

From bibbleWiki
Jump to navigation Jump to search
No edit summary
Line 5: Line 5:
[[file:Webpack_structure.png]]
[[file:Webpack_structure.png]]
=webpack.config.js=
=webpack.config.js=
This essentially handles the merge of the other files. I added to parameters for, which environment and whether to show the webvitals report.
This essentially handles the merge of the other files. I added to parameters for, which environment and whether to show the BundleAnalyzer report.
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
import { merge } from 'webpack-merge'
import { merge } from 'webpack-merge'
Line 25: Line 25:
}
}
</syntaxhighlight>
</syntaxhighlight>
=Running the build=
So to do the build we launch this from npm. all pretty obvious
<syntaxhighlight lang="js">
    "start": "webpack serve --config configs/webpack/webpack.config.js --env env=development",
    "dev": "webpack --config configs/webpack/webpack.config.js --env env=development",
    "build": "webpack --config configs/webpack/webpack.config.js --env env=production",
    "report": "webpack --config configs/webpack/webpack.config.js --env env=production --env=withReport",
</syntaxhighlight>
The report option runs the BundleAnalyzerPlugin which shows the breakdown of the bundle<br>
[[File:Bundle_Analzer_2024-12-13_12-26-16.png]]<br>

Revision as of 23:27, 12 December 2024

Introduction

This page is about webpack which I guess is quite old. I wanted to capture what I learned when I used it.

Structure of the Code

For me I divided this up in the following way

webpack.config.js

This essentially handles the merge of the other files. I added to parameters for, which environment and whether to show the BundleAnalyzer report.

import { merge } from 'webpack-merge'

import { commonConfig } from './webpack.config.common.js'
import { devConfig } from './webpack.config.dev.js'
import { prodConfig } from './webpack.config.prod.js'

export default ({ env, withReport }) => {
  console.log(`Building for ${env} environment...`)
  switch (env) {
    case 'development':
      return merge(commonConfig(env, withReport), devConfig(process.env.SSL_KEY_FILE, process.env.SSL_CRT_FILE))
    case 'production':
      return merge(commonConfig(env, withReport), prodConfig)
    default:
      throw new Error('No matching configuration was found!')
  }
}

Running the build

So to do the build we launch this from npm. all pretty obvious

    "start": "webpack serve --config configs/webpack/webpack.config.js --env env=development",
    "dev": "webpack --config configs/webpack/webpack.config.js --env env=development",
    "build": "webpack --config configs/webpack/webpack.config.js --env env=production",
    "report": "webpack --config configs/webpack/webpack.config.js --env env=production --env=withReport",

The report option runs the BundleAnalyzerPlugin which shows the breakdown of the bundle