如果之前有人问过这个问题,我必须道歉,但我一直无法在网上找到答案,也无法在webpack的文档中找到与摇树有关的答案。
如何在默认参数的情况下进行树摇动?上下文:我特别关注webpack如何实现树抖动处理默认参数。
考虑到以下假设的应用结构:
/
|_ dependency/
| |
| |_ dependency.js
| |_ moderatelyLargeFile.js
|
|
|_src/
|
|_ application.js
|_ someSmallFile.js
以及每个文件中的以下代码:
dependency.js
import moderatelyLargeFile from './moderatelyLargeFile.js';
import { someParsingFunction1, someParsingFunction2 } from 'somewhere-else-dependency';
export default function parseSomeFile(file = moderatelylargeFile) {
let parsedResult = { ...someParsingFunction1(file), ...someParsingFunction2(file) };
return parsedResult;
}
application.js
import parseSomeFile from './dependency/dependency.js';
import someSmallFile from './someSmallFile.js'
let result = parseSomeFile(someSmallFile);
// Do other application stuff with result
moderatelyLargeFile.js
会被捆绑到webpack的application.js
建筑里吗?webpack是否聪明到知道默认参数永远不会被引用,因为单个调用提供了该参数?或者moderatelyLargeFile.js
总是被捆绑,不管因为它是函数定义的一部分?
发布于 2022-04-15 13:03:46
不-从2022年4月开始,任何已知的绑定程序都不支持死代码消除未使用的默认参数。
我把一种为主要打包机举个例子的回购放在一起,它测试了不同的绑定器如何处理利伯斯的WebAssembly加密实现的树抖动/死代码消除(一个很好的实际例子,其中一些包可以节省数百个KBs)。
我还为我熟悉的打火机打开了一些问题:
当不同的绑定程序添加支持时,我将尝试更新这个答案。该回购也有一张桌子。
https://stackoverflow.com/questions/65366849
复制相似问题