首页 > 解决方案 > 巴别塔没有摇树吗?

问题描述

在我的 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')

这不知何故意味着摇树不起作用,整个package-example被包含在构建中。

Q1。这是正确的假设吗?

Q2。我怎样才能仍然摇晃树以便只MyFunc被导入?我现在不能使用 webpack。没有 webpack/rollup 就不可能babel吗?

标签: javascriptwebpackbabeljs

解决方案


Babel 在单个级别处理文件。Tree-shaking 需要在项目范围内了解哪些文件正在被使用,哪些文件没有被使用,因此 Babel 不会也不能这样做。为此,您需要 Webpack 或 Rollup 或其他一些构建/捆绑工具。


推荐阅读