【发布时间】:2017-09-05 22:05:37
【问题描述】:
有没有办法在 webpack 2 中禁用 tree-shaking,或者恢复到 webpack 1 中由 babel 处理导入的行为?我有一个似乎是 webpack 中的错误,但它只是随机发生的(不是 100% 可重现的),我想恢复到旧的行为,看看问题是否会消失。
我看到的错误是我在 node_modules 中导入模块,有时结果符号未定义。例如:
import { withRouter } from 'react-router';
'withRouter' 的值未定义,但仅在一个模块中。奇怪的是,这只发生在初始构建时,如果我进行增量构建,一切正常。
请注意,为 babel 设置 { modules: true } 不起作用 - 它只会导致 webpack 报告错误。
在了解更多信息之前,我不想将此作为错误提交。而且因为这只发生在一个大型项目中的数千个符号中,我怀疑我是否可以制作一个小的复制案例。
编辑:我创建了一个可以重现问题的极简示例:
【问题讨论】:
-
您是否碰巧找到了禁用未使用代码删除的方法?我面临着类似的问题,我正在构建一个 npm 包,其中包含一些旨在供其他使用者库使用但在 npm 包本身中未引用的模块,因此 webpack 将它们从输出包中排除。
-
我从来没有在这里得到回复,或者我向 webpack 提交的 github 错误。最近我的 stackoverflow 运气不好,我的绝大多数问题都没有得到解答。
-
我讨厌添加“我也是”但是...“我也是”。开发模式中存在的模块有时在生产中不存在。摇树似乎是罪魁祸首,但我无法辨别如何禁用它......至少看看这是否是罪魁祸首。