Bil*_*rry 6 javascript webpack tree-shaking
如果之前有人问过这个问题,我必须道歉,但我无法在网上或在与 tree shake 相关的 webpack 文档中找到答案。
树摇动如何使用默认参数进行工作?对于上下文:我特别关心 tree-shaking 的 webpack 实现如何处理默认参数。
给出以下假设的应用程序结构:
/
|_ dependency/
| |
| |_ dependency.js
| |_ moderatelyLargeFile.js
|
|
|_src/
|
|_ application.js
|_ someSmallFile.js
Run Code Online (Sandbox Code Playgroud)
以及每个文件中的以下代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
application.js
import parseSomeFile from './dependency/dependency.js';
import someSmallFile from './someSmallFile.js'
let result = parseSomeFile(someSmallFile);
// Do other application stuff with result
Run Code Online (Sandbox Code Playgroud)
会moderatelyLargeFile.js被捆绑到 webpack 构建中吗application.js?webpack 是否足够聪明,知道默认参数永远不会被引用,因为单次调用提供了该参数?或者是否moderatelyLargeFile.js总是被捆绑在一起,因为它是函数定义的一部分?
截至 2022 年 4 月,没有 \xe2\x80\x93,目前任何已知的捆绑程序都不支持消除未使用的默认参数的死代码。
\n我将主要捆绑器的示例放在一起,它测试了各种捆绑器如何处理Libauth WebAssembly 加密实现的树摇动/死代码消除。(这是一个很好的现实示例,其中某些捆绑包可以节省数百KB。)
\n我还为我熟悉的捆绑程序提出了问题:
\n当各种捆绑程序添加支持时,我将尝试更新此答案。该仓库还有一张桌子。
\n| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |