babel 没有 tree shaking 吗?

babel doesn't have tree shaking?

在我的 package.json 中,我有以下

"build": "babel src --out-dir dist --source-maps",

在我的一个 js 文件中,我有

import { MyFunc } from 'package-example`

那我运行npm run build。它构建,创建一个 dist 文件夹。

不知何故,在我构建的文件中,我发现了这个:

const package-example = require('package-example')

这在某种程度上意味着 tree shaking 不起作用,整个 package-example 都包含在构建中。

Q1。这是正确的假设吗?

Q2。我怎样才能仍然进行 tree shaking 以便只导入 MyFunc ?我现在不能使用 webpack。如果没有 webpack/rollup 就不可能,只有 babel 吗?

Babel 在个人级别处理文件。 Tree-shaking 需要在项目范围内了解哪些文件正在使用和未使用,因此 Babel 不会,也不能这样做。为此,您需要 Webpack 或 Rollup 或其他一些 build/bundling 工具。