【发布时间】:2020-09-11 19:15:56
【问题描述】:
我正在使用 React 并且有一个像这样的文件树:
src/
common/
common-comp1/
common-comp1.js
common-comp1.test.js
index.js
common-comp2/
common-comp2.js
common-comp2.test.js
index.js
index.js
app/
app-comp1/
app-comp1.js
app-comp1.test.js
index.js
app-comp2/
app-comp2.js
app-comp2.test.js
index.js
index.js
所有 index.js 文件都是export * from '...'; 的桶文件。我设置了路径别名,这样我就可以在src/app/app-comp1/app-comp1.js 中使用import CommonComp1 from 'common';。
不幸的是,这也会从src/common/common-comp2/* 加载/转换代码,即使app-comp1.js 没有导入它。当我使用 webpack 构建应用程序时这很好,因为无论如何我都需要导入和转换所有内容。
但是,对于包含大约 350 个组件的测试,这使得运行单个测试套件在启动时非常缓慢。我只想导入/转换运行测试所需的文件。有没有办法延迟加载每个导出/导入?我想也许我可以通过调用jest.requireActual() 模拟我的桶文件并导出一个Proxy 来做到这一点,该Proxy 仅在直接导入组件时需要/记忆组件。我开始这样做,但后来意识到我必须解析整个文件树以获取导入和导出名称,这听起来很乏味。 (至少我认为我必须这样做。)
我想我也可以尝试代理 require() 本身(几周前我尝试过这个不同的问题),但是 iirc,它是一个常量或声明为不可配置/不可写。
想法?
【问题讨论】:
-
我的意思是,我必须建立一个完整的项目。那是你要的吗?下班后我可以做。
-
哈哈谢谢。我只是在研究它。昨天下班太累了。
标签: reactjs jestjs lazy-loading lazy-evaluation