3
votes

    module.exports = {
        entry: './index.js',
        output: {
            filename: 'index.min.js',
            path: './'
        },
        module: {
            loaders: [
                {
                    test: /\.js$/,
                    loader: 'babel',
                    exclude: /node_modules/,
                    query: {
                        presets: ['es2015'],
                        plugins: ['transform-runtime']
                    },
                    cacheDirectory: true
                }
            ]
        }
    }


    const pi = 3.14159265;

    let s = "Hello";

    for (let codePoint of s) {
        console.log(codePoint);
    }

When I delete the line of "exclude", the compiled file becomes about twice greater and it throw error: "$extend is not a function".

I wonder why the exclude option have effects on the compiling process. I only compile ./index.js

1

1 Answers

1
votes

It's the transform-runtime plugin which is causing this behaviour - if you leave it away the sizes are identical.

In order to find the root of your problem I created two configurations, one with node_modules excluded and another one just as yours. Additionally I let webpack generate source maps (web pack's -d parameter / devtool: "source-map" config) and looked at the included files not present in the excluded version (simple diff). These are

webpack:///../~/babel-runtime/core-js/object/create.js
webpack:///../~/babel-runtime/core-js/object/define-properties.js
webpack:///../~/babel-runtime/core-js/object/define-property.js
webpack:///../~/babel-runtime/core-js/object/get-own-property-descriptor.js
webpack:///../~/babel-runtime/core-js/object/get-own-property-names.js
webpack:///../~/babel-runtime/core-js/object/get-own-property-symbols.js
webpack:///../~/babel-runtime/core-js/object/get-prototype-of.js
webpack:///../~/babel-runtime/core-js/object/is-extensible.js
webpack:///../~/babel-runtime/core-js/object/keys.js
webpack:///../~/babel-runtime/core-js/object/prevent-extensions.js
webpack:///../~/babel-runtime/core-js/symbol.js
webpack:///../~/babel-runtime/core-js/symbol/iterator.js
webpack:///../~/babel-runtime/helpers/typeof.js
webpack:///../~/core-js/library/fn/object/create.js
webpack:///../~/core-js/library/fn/object/define-properties.js
webpack:///../~/core-js/library/fn/object/define-property.js
webpack:///../~/core-js/library/fn/object/get-own-property-descriptor.js
webpack:///../~/core-js/library/fn/object/get-own-property-names.js
webpack:///../~/core-js/library/fn/object/get-own-property-symbols.js
webpack:///../~/core-js/library/fn/object/get-prototype-of.js
webpack:///../~/core-js/library/fn/object/is-extensible.js
webpack:///../~/core-js/library/fn/object/keys.js
webpack:///../~/core-js/library/fn/object/prevent-extensions.js
webpack:///../~/core-js/library/fn/symbol/index.js
webpack:///../~/core-js/library/fn/symbol/iterator.js
webpack:///../~/core-js/library/modules/_enum-keys.js
webpack:///../~/core-js/library/modules/_is-array.js
webpack:///../~/core-js/library/modules/_keyof.js
webpack:///../~/core-js/library/modules/_meta.js
webpack:///../~/core-js/library/modules/_object-gopd.js
webpack:///../~/core-js/library/modules/_object-gopn-ext.js
webpack:///../~/core-js/library/modules/_object-gopn.js
webpack:///../~/core-js/library/modules/_object-gops.js
webpack:///../~/core-js/library/modules/_object-pie.js
webpack:///../~/core-js/library/modules/_object-sap.js
webpack:///../~/core-js/library/modules/_wks-define.js
webpack:///../~/core-js/library/modules/_wks-ext.js
webpack:///../~/core-js/library/modules/es6.object.create.js
webpack:///../~/core-js/library/modules/es6.object.define-properties.js
webpack:///../~/core-js/library/modules/es6.object.define-property.js
webpack:///../~/core-js/library/modules/es6.object.get-own-property-descriptor.js
webpack:///../~/core-js/library/modules/es6.object.get-own-property-names.js
webpack:///../~/core-js/library/modules/es6.object.get-prototype-of.js
webpack:///../~/core-js/library/modules/es6.object.is-extensible.js
webpack:///../~/core-js/library/modules/es6.object.keys.js
webpack:///../~/core-js/library/modules/es6.object.prevent-extensions.js
webpack:///../~/core-js/library/modules/es6.symbol.js
webpack:///../~/core-js/library/modules/es7.symbol.async-iterator.js
webpack:///../~/core-js/library/modules/es7.symbol.observable.js

The transform-runtime plugin processes these files, and so they are included in your build when you don't exclude node_modules.