DEV Community

Cover image for Webpack Academy #0: What is webpack and why use it?
Code Oz
Code Oz

Posted on β€’ Edited on

51 20

Webpack Academy #0: What is webpack and why use it?

5i2nmh

Welcome to my new academy, Webpack Academy !

I will try to share my webpack knowledges !

Let's start !

Fast presentation

From webpack doc:

At its core, webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a dependency graph which maps every module your project needs and generates one or more bundles.

To summarise, Webpack will help you to handle import/export of your file in your project, and it will put all of your code in one file called bundle.

Why use webpack?

Legit question, if you have ever build javascript project, you should now the problems about import js file in your application !

I will show you a brief illustration of what we did before !



<script src="jquery.min.js"></script>
<script src="jquery.some.plugin.js"></script>
<script src="main.js"></script>


Enter fullscreen mode Exit fullscreen mode

We need to import all dependencies on by one and in the correct order, if we want to import a new lib, we need to import it in the correct order, because if this new lib depends on jquery, we need to import it after import jquery!

You think you can handle it, yes you can but imagine if your need to import 100 libs, this can be CHAOTIC.

At this moment we create manually bundle file



// build-script.js
const scripts = [
   "jquery.min.js",
   "jquery.some.plugin.js",
   "main.js",
].concat().uglify().writeTo("bundle.js")

<script src="bundle.js"></script>


Enter fullscreen mode Exit fullscreen mode

We fix the multiple import of scripts, but don't fix the dependencies between libs.

Web + Pack = Webpack

Webpack handle only .js and .json file natively. But we will see in the next article how to handler other file !

You only need to give an entry point to webpack, and it will create a dependencies tree 🌳 from this file and check all other file !

From now, we don't need to handle dependencies order by our hands !

Example

Context: We have two files that export one variable:

first.js



export const first = 1


Enter fullscreen mode Exit fullscreen mode

second.js



export const second = 2


Enter fullscreen mode Exit fullscreen mode

We have another file that import both file

three.js



import { first } from './first'
import { second } from './second'

export const three = first + second


Enter fullscreen mode Exit fullscreen mode

And finally the main file that will console.log the three variable

main.js



import { three } from './three'

console.log(three)


Enter fullscreen mode Exit fullscreen mode

With the old tips we should use something like this:



// build-script.js
const scripts = [
   "one.js",
   "second.js",
   "three.js",
   "main.js",
].concat().uglify().writeTo("bundle.js")

<script src="bundle.js"></script>


Enter fullscreen mode Exit fullscreen mode

But with webpack, we don't need to handle dependencie order !

Let's run our code with the webpack.config.js



const path = require("path")

const config = {
    mode: "development",
    // Webpack start from this entry point
    entry: {
        myApp: [
            "./src/main.js",
        ],
    },
    // This is the output of Webpack
    output: {
        // From current folder + dist folder that will contains all bundle
        path: path.resolve(__dirname, "dist/"),
        filename: "bundle.js"
    },
}

module.exports = config


Enter fullscreen mode Exit fullscreen mode

Don't be afraid by this config file, during the academy we will add and change few, but a the end you will understand all line !

To summarise this config, we indicate to webpack the entry point of our project, and we indicate the output file name and path !

Let run webpack command ! (you need to install webpack CLI before)

And finally go to dist folder and check the bundle.js file.

Try it



node dist/bundle.js
3


Enter fullscreen mode Exit fullscreen mode

Yes it's work !

If you want to try, fetch my repository from this commit ! πŸ‘‡

https://github.com/Code-Oz/webpack-academy/tree/e49ca8d675b985551ec98dcf572edbfa07db4e33

I hope you want to learn more about webpack in my academy !


I hope you like this reading!

🎁 You can get my new book Underrated skills in javascript, make the difference for FREE if you follow me on Twitter and MP me 😁

Or get it HERE

🎁 MY NEWSLETTER

β˜•οΈ You can SUPPORT MY WORKS πŸ™

πŸƒβ€β™‚οΈ You can follow me on πŸ‘‡

πŸ•Š Twitter : https://twitter.com/code__oz

πŸ‘¨β€πŸ’» Github: https://github.com/Code-Oz

And you can mark πŸ”– this article!

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (7)

Collapse
 
islam_emad profile image
Eslam Emad Hossni β€’

nice articale

Collapse
 
mogneur profile image
mogneur β€’

Nice article Code Oz !

Collapse
 
codeoz profile image
Code Oz β€’

Thanks mogneur

Collapse
 
blackraider6 profile image
Black Raider β€’

nice short intro to webpack

Collapse
 
codeoz profile image
Code Oz β€’

Thanks a lot 😁

Collapse
 
imjituchauhan profile image
Jitu Chauhan β€’

Thank you for this amazing WebPack tutorial Series for initial start.

Collapse
 
codeoz profile image
Code Oz β€’

thank you for your comment Jitu, it's very motivating

The best way to debug slow web pages cover image

The best way to debug slow web pages

Tools like Page Speed Insights and Google Lighthouse are great for providing advice for front end performance issues. But what these tools can’t do, is evaluate performance across your entire stack of distributed services and applications.

Watch video

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay