从Webpack的require.context中排除文件

Fez*_*sta 9 javascript regex webpack

我正在尝试将require.context我的伊斯坦布尔记者应该涵盖的所有文件包含在Webpack中.

我想包含/要求下面app没有.test.js扩展名的所有文件.

// internals/testing/test-bundler.js
const context = require.context('../../app', true, /^.*(?!(\.test|internals.*))\.js$/);
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)

我的文件结构是:

app/components/
app/containers/
app/decorators/
app/orm/
app/pages/
app/store/
app/tests/
app/utils/
app/app.js
app/reducers.js
app/routes.js
internals/testing/test-bundler.js
Run Code Online (Sandbox Code Playgroud)

显然我的正则表达式不起作用,因为在覆盖率报告中我看到所有.test.js文件甚至internals/testing/test-bundler.js文件.

我究竟做错了什么?

Luk*_*rms 15

你需要注意负面前瞻部分采用哪种方式拒绝它.如果你在第一个正斜杠后立即执行它可以正常工作.

有了这个,你想.*test在斜线后拒绝,而不是test直接在它后面.

/^(?!internals).*\/(?!.*test).*\.js$/
Run Code Online (Sandbox Code Playgroud)

或者更具体的是不允许internals在路径名中.
也不以test.js:

^(?!.*(?:internals|test.js$)).*\.js$
Run Code Online (Sandbox Code Playgroud)