【发布时间】:2020-09-21 21:33:23
【问题描述】:
给定以下两个文件:
//a.js
export const X = /*#__PURE__*/ "X";
const a = function () {
return "About a!";
};
a.foo = function () {
return "foo";
};
export default a;
和
//main.js
import { X } from "./a";
import { Y } from "./b";
console.log(X, Y);
我已经添加了
-
"sideEffect": false到package.json -
optimization.usedExports: true到webpack.config.js
但运行 webpack -p 仍将整个 a.js 文件包含在包中。汇总仅包括来自a.js (demo) 的X
删除a.foo 定义“修复”了问题,但不是演示存储库之外的解决方案。
我已经多次阅读tree-shaking 文档页面,阅读[无数关于在 webpack 问题跟踪器上摇晃的问题,我仍然无法弄清楚以下内容:
- 为什么
X上的/*#__PURE__*/标记没有被使用? - 有没有办法将 webpack 配置为仅包含来自
a.js的 X?
您还可以查看 sandbox repository 以查看完整的 webpack 配置和相应的 next.js/react 问题(请参阅 pages/index.jsx),这导致我遇到了这个特定问题。
【问题讨论】:
标签: javascript webpack webpack-4 tree-shaking