Webpack выводит очень большой пакет: 1,5 МБ минимизировано .
Я импортирую отдельные компоненты в соответствии с документацией, используя import 'antd / lib /...'
Этимой импорт:
import React from "react";
import ReactDOM from "react-dom";
import TreeSelect from 'antd/lib/tree-select';
const TreeNode = TreeSelect.TreeNode;
import 'antd/lib/tree-select/style/css';
import moment from 'moment';
import LocaleProvider from 'antd/lib/locale-provider';
import DatePicker from 'antd/lib/date-picker';
import 'antd/lib/date-picker/style/css'
const { RangePicker } = DatePicker;
import Menu from 'antd/lib/menu';
import 'antd/lib/menu/style/css'
import Dropdown from 'antd/lib/dropdown';
import 'antd/lib/dropdown/style/css';
import Modal from 'antd/lib/modal';
import 'antd/lib/modal/style/css';
import './styles.css';
Я использую только 5 компонентов.Имеет ли смысл размер пакета такой большой?Мой собственный код довольно мал - около 15 КБ без минимизации.
ОБНОВЛЕНИЕ: После использования IgnorePlugin()
на данный момент размер моего пакета уменьшился на 300 КБ.Тем не менее, 1,5 МБ очень большой.
Ниже приведены файлы конфигурации webpack.
webpack.config.js:
const config = {
entry: {
main: path.resolve(SRC_DIR, "index.js"),
},
mode: 'development',
devtool: 'cheap-eval-source-map',
output: {
path: DIST_DIR,
filename: "bundle.js",
publicPath: "/static/bundles/",
},
resolve: {
extensions: [".js", ".json", ".css"]
},
module: {
rules: [
{
test: /\.js?/,
include: SRC_DIR,
loader: "babel-loader",
options: {
babelrc: true
}
},
{
test: /\.css$/,
use: [
"style-loader", "css-loader"
]
}
]
},
plugins: [
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
//new webpack.LoaderOptionsPlugin({ debug: true}),
]
};
module.exports = config;
webpack.prod.js (используется для создания пакета):
const common = require('./webpack.config.js');
module.exports = Object.assign(common, {
entry: {
main: path.resolve(SRC_DIR, "index.js"),
},
mode: 'production',
devtool: false,
output: {
publicPath: '/static/dist/',
path: DIST_DIR,
filename: 'bundle.js'
},
plugins: [
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
new BundleAnalyzerPlugin()
]
});