как работает webpack runtime - PullRequest
0 голосов
/ 26 мая 2019

У меня есть простой проект, где я хочу разделить код. Моя точка входа имеет следующий код

import $ from 'jquery';
import Popper from 'popper.js';
import 'bootstrap';
import moment from 'moment';
import 'moment-timezone';

try {
    window.$ = window.jQuery = $;
    window.Popper = Popper;
    window.moment = moment;
    window.test = {a:'d'};
}
catch (e) {
    console.error(e);
}

Если я скомпилирую вышеупомянутые js без использования приведенного ниже конфига на webpack.config

optimization: {
        runtimeChunk: 'multiple',
        splitChunks: {
            chunks: 'all',
            maxInitialRequests: Infinity,
            minSize: 0,
            cacheGroups: {
                vendor: {
                    test: /[\\/]node_modules[\\/]/,
                    name(module) {
                        // get the name. E.g. node_modules/packageName/not/this/part.js
                        // or node_modules/packageName
                        // const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
                        const packageParts = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/);
                        let packageName = 'core';
                        if (packageParts){
                            packageName = packageParts[1];
                        }

                        // npm package names are URL-safe, but some servers don't like @ symbols
                        return `npm.${packageName.replace('@', '')}`;
                    },
                },
            },
        },
    },

Тогда все работает как положено, когда я включаю свой пакет в проект, тогда существует объект window.moment или window.test, если я добавляю конфигурацию оптимизации, эти объекты никогда не создаются. Я вижу, что код существует в файле пакета, но кажется, что он никогда не выполняется, я играл с runtimeChunk, чтобы изменить его на одиночный, ложный, истинный, множественный, но всегда один и тот же результат.

Я думаю, что что-то не хватает в логике, когда код выполняется или как, кто-нибудь может посоветовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...