Я пытаюсь разделить пакеты поставщиков и приложений с помощью autodll-webpack-plugin (v0.4.2
).Этот пакет представляет собой плагин верхнего уровня для DllPlugin веб-пакета и add-asset-html-webpack-plugin для автоматического упорядочения импорта в index.html
.
То, что должен делать этот плагин, - это разделение библиотек поставщиков и кода приложения.Я мог бы сделать это с помощью CommonsChunkPlugin из веб-пакета, но таким образом пакет регенерируется при каждой перекомпиляции.Что менее эффективно, чем генерация комплекта поставщика один раз и перекомпиляция только после изменения библиотеки.
Проблема
Я получил этот плагин для "работы" (он выводит vendor.bundle.js
).Единственная проблема здесь заключается в том, что при проверке app.bundle.js
с помощью webpack-bundle-analyzer (v2.13.1
).Я вижу, что все node_modules, которые есть в vendor.bundle.js
, также загружены в этот пакет, поэтому плагин работает неправильно.
Версии
Я использую:
- webpack
v4.11.0
- babel-loader
v7.1.4
- babel-core
v6.26.3
- autodll-webpack-plugin
v0.4.2
Структура проекта
Мой проект имеетследующая структура документа:
App
-- build //Here are the output bundles located
-- node_modules
-- public
-- index.html
-- src // App code
-- webpack
-- webpack.common.js
-- webpack.dev.js
-- webpack.prod.js
-- package.json
My webpack.common.js ( Этот код используется совместно со сборками Dev & prod )
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const AutoDllPlugin = require('autodll-webpack-plugin');
module.exports = {
entry: {
app: [
'babel-polyfill',
'./src/index.js',
],
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, '../build'),
publicPath: '', // Is referenced by the autodll-webpack-plugin
},
module: {
rules: [
{
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
plugins: ['react-hot-loader/babel'],
cacheDirectory: true,
presets: ['env', 'react'],
},
}
],
},
plugins: [
new HtmlWebpackPlugin({
template: './public/index.html'
}),
new AutoDllPlugin({
inject: true, // will inject the DLL bundle to index.html
debug: false,
filename: '[name]_[hash].js',
context: path.join(__dirname, '..'),
path: '',
entry: {
vendor: [
'react',
'react-dom'
]
},
}),
],
};
В соответствии с документами autodll-webpack-plugin
контекстный ключ должен использоваться для разделения.Поэтому я думаю, что именно в этом проблема.
Документы описывают, что вы должны ссылаться на папку, где находится webpack.config.js
, но у меня есть 3 из них, на какую мне нужно ссылаться?И моя папка называется webpack
, а не config
, которую вы видите в документации, ..
здесь тоже правильно?