为什么使用默认导入而不是命名导入时我的 ES6 webpack 包更大?

Mar*_*arc 8 javascript ecmascript-6 es6-modules

我正在使用 OpenLayers 6 并使用以下符号导入库的部分内容:

import { Map, View } from 'ol';
import { Vector as VectorSource } from 'ol/source';
import { Vector as VectorLayer } from 'ol/layer';
// More in other files [...]
Run Code Online (Sandbox Code Playgroud)

运行时,我的项目npm run dev得到一个9MB 的文件。

出于测试目的,我尝试用默认导入替换这些命名导入:

import Map from 'ol/Map';
import View from 'ol/View';
import VectorSource from 'ol/source/Vector';
import VectorLayer from 'ol/layer/Vector';
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它将我的捆绑文件减少到6MB!它的重量减轻了 33%,这是为什么呢?命名导入不应该只导入模块的必需部分吗?

编辑 1

在@Bergi 评论之后,该库可在此处获得。我使用通过npm以下方式安装的最新版本:v6.4.2

编辑 2

正如@felixmosh 的回答所指出的,跑步npm run prod似乎可以减少尺寸差异。我得到了1KB886KB885KB 的差异

fel*_*osh 5

Tree Shaking 是缩小过程的一部分。在开发包中,不应用此过程。

尝试在“生产”模式下运行,并比较结果。