Webpack - настройка конфига для выделения общего кода
в продолжение вопроса https://ru.stackoverflow.com/questions/1188973/import-в-js-файлах/1191165
сделал тестовый конфиг
const path = require('path');
const webpack = require('webpack');
module.exports = {
mode: 'development',
devtool: 'inline-cheap-module-source-map',
watchOptions: {
ignored: ['node_modules/**'],
},
context: path.resolve(__dirname, 'sources'),
entry: {
home: './home.js',
about: './about.js',
contacts: './contacts.js',
},
output: {
path: path.resolve(__dirname, 'public/js'),
filename: '[name].js',
},
plugins: [
// new webpack.optimize.CommonsChunkPlugin({ // не работает в версии 5
// name: 'common',
// }),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
}),
],
optimization: {
// minimize: true,
splitChunks: {
minChunks: Infinity,
// chunks: 'all',
chunks: 'initial',
minChunks: 2,
name: 'common',
cacheGroups: {
common: {
idHint: 'common',
// chunks: 'all',
enforce: true,
name: 'common',
},
},
},
},
};
файлы: home.js
console.log('in home');
let welcome = require('./welcome');
welcome('home');
about.js
console.log('in about');
let welcome = require('./welcome');
welcome('about');
import 'select2';
import 'tinymce';
import 'socket.io-client';
contacts.js
console.log('in contacts');
let welcome = require('./welcome');
welcome('contacts');
import 'tinymce';
вебпак при этом создает файл common.js в который по идее должен добавлять обший код, но он этого не делает, вместо этого он запихивает в common.js код всех модулей а в home.js, about.js, contacts.js остаются вызовы кода из common.js - это неправильное поведение
как сделать так чтобы в common.js попадал только общий код который подключается через import/require
так же мне непонятно, как выделять автоматически общий код для 3 и более разных файлов, например:
в home.js и about.js есть вызов общих модулей
в about.js и contacts.js есть вызов общих модулей
в contacts.js и home.js есть вызов общих модулей
должно получиться:
common-home.js (общий код для home.js и about.js) + home.js
common-about.js (общий код для about.js и contacts.js) + about.js
common-contacts.js (общий код для contacts.js и home.js) + contacts.js
обращаю внимание: вебпак должен выделять этот код автоматически, иначе смысла в использовании вебпака нет вообще
буду рад любым идеям, комментариям итд..