У меня есть простой проект, где я хочу разделить код. Моя точка входа имеет следующий код
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, чтобы изменить его на одиночный, ложный, истинный, множественный, но всегда один и тот же результат.
Я думаю, что что-то не хватает в логике, когда код выполняется или как, кто-нибудь может посоветовать?