Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does webpack build global.js?

I'm getting started with webpack, and on my first build I noticed that the output included a default file was included (index 1):

build.js  222 kB       0  [emitted]  main
   [1] (webpack)/buildin/global.js 509 bytes {0} [built]
   [2] ./source/scripts/main.js 105 bytes {0} [built]
    + 4 hidden modules

Why is this file being included? I don't have any dependencies that would require anything close to the amount of code that comes out in my build.js file. I was expecting to have maybe 10 lines of code in the output, instead I have 8000.

I've also noticed some other projects out there don't have this file listed in the output. Is this strictly necessary? I can't even find it in the docs.

For reference, my webpack.config.js file:

'use strict';

module.exports = {
    entry: './source/scripts/main.js',
    output: {
        path: __dirname + '/dist',
        filename: 'build.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/
            }
        ]
    }
}
like image 584
Felipe Avatar asked Oct 15 '17 18:10

Felipe


People also ask

Is webpack global?

Webpack evaluates modules only once, so your instance remains global and carries changes through from module to module.

Does webpack compile JavaScript?

Webpack is used to compile JavaScript modules. Once installed, you can interact with webpack either from its CLI or API. If you're still new to webpack, please read through the core concepts and this comparison to learn why you might use it over the other tools that are out in the community.

Does webpack automatically minify?

Webpack v4+ will minify your code by default in production mode .

Does webpack need Index js?

Out of the box, webpack won't require you to use a configuration file. However, it will assume the entry point of your project is src/index. js and will output the result in dist/main.


Video Answer


1 Answers

I had the same issue. It turned out that I was importing something from node_modules accidentally.

In typescript:

import Util from 'Util';

should have been

import Util from './Util';

since the first one loaded a 'Util' from node modules instead of my local file. The 'exclude: /node_modules/' doesn't seem to matter. I had the equivalent in my tsconfig. Maybe webpack should warn if you import something that's excluded.

like image 79
Mike Blandford Avatar answered Oct 09 '22 01:10

Mike Blandford