桶文件、webpack 和 jest

Anc*_*nek 10 javascript reactjs webpack jestjs

我对桶文件、webpack 和 jest 有几个问题。我从来没有真正想过它们是如何工作的,现在我正在努力(开玩笑地)在一个还没有测试的更大的应用程序上编写测试。

我在大文件夹(如components)中有桶文件,它们看起来像这样:

/组件/index.js

export { default as ComponentA } from './ComponentA';
export { default as ComponentB } from './ComponentB';
export { default as ComponentC } from './ComponentC';
Run Code Online (Sandbox Code Playgroud)

通过这样的设置,我可以轻松导入这些组件,如下所示:

import { ComponentA, Component C } from '/components';
Run Code Online (Sandbox Code Playgroud)

而不是写

import Component A from '/components/ComponentA';
import Component C from '/components/ComponentC';
Run Code Online (Sandbox Code Playgroud)

我的主要问题:在我的 webpack 捆绑文件中,是否会仅仅因为我有 ComponentB 文件components/index.js(但我并没有真正使用它)而包含它?

当我开始用 jest 编写测试并开始向我抛出有关我尚未编写测试的文件的错误时,我想到了这一点。我试图搜索原因,我能找到的唯一原因是我从更大的文件中的桶文件导入(例如,我ComponentA在构建页面时从桶文件导入 - 我现在正在尝试测试)。

Luc*_*oke 2

应该支持桶导入,至少如果您使用 ts-jest 转换。参考:https: //github.com/kulshekhar/ts-jest/issues/1149

但我鼓励桶类型定义 src/types/index.d.ts 出现类似问题,通常在代码库中引用为 @/types

我最终配置了额外的 moduleNameMapper 定义

 moduleNameMapper: {
    // FIXES Could not locate module @/types mapped as: .../src/types.
    '^@/types$': '<rootDir>/src/types/index.d',
  },
Run Code Online (Sandbox Code Playgroud)

希望这会对某人有所帮助:)