为什么我期望从树上动摇的函数仍然存在于create-react应用程序构建中



类似于摇树创建react应用程序?但更多的是如何验证和修复。

所以我创建了一个react钩子库。在那里,我添加了一个例子来帮助我理解摇树是如何工作的。

import { useClock, useDeepState } from '@trajano/react-hooks';
export function App(): JSX.Element {
useClock();
useDeepState("foo");
return <div>Hello world</div>
}

然而,我在库代码库中添加了一个名为useAsyncSetEffect的函数,但通过useClockuseDeepState的代码跟踪,我根本没有找到该函数,但当我查看生成的文件时,我看到了对useAsyncSetEffect的引用。

不太确定是什么原因造成的,库不大,所以大小只是一个K gzipped,但我很好奇为什么会包含它。

TL;DR

在CCD_ 5〃中;模块":"dist/index.modern.js";,

我是如何得到答案的

在尝试了一些东西之后,我发现这是我的库的package.json上需要添加的内容。由于我正在使用构建现代和cjs

"build": "microbundle-crl --format modern,cjs",

它生成一个代码版本,该版本将使用模块系统。由于它使用了模块系统,因此能够正确地进行树抖动,之后我减少了代码。

44.62 KB (-11.02 KB)  buildstaticjs2.7a693cc3.chunk.js
800 B                 buildstaticjsruntime-main.21ea8395.js
619 B (-601 B)        buildstaticjsmain.21098aa9.chunk.js

顺便说一句,它还减少了2中的代码。它包含了更多的React代码,很高兴它大大减少了11k 的大小

关于防止babel将ES6模块转换为CommonJS模块的说明为我提供了必要的提示。此外,由于我知道我的代码没有副作用,我还添加了"sideEffects": false,

最新更新