javascript - 从 Webpack 的 require.context 中排除文件

标签 javascript regex webpack

我试图在 Webpack 的 require.context 中包含我的 Istanbul 尔记者应该涵盖的所有文件。

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

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

我的文件结构是:

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

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

我做错了什么?

最佳答案

您需要了解否定前瞻使用拒绝的部分。如果您在第一个正斜杠之后立即执行此操作,则效果很好。

并且您想要在斜线后拒绝 .*test,而不是直接在它后面的 test

/^(?!internals).*\/(?!.*test).*\.js$/

或者更具体地说,不允许在路径名中使用 internals
也不以 test.js 结尾:

^(?!.*(?:internals|test.js$)).*\.js$

关于javascript - 从 Webpack 的 require.context 中排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075646/

相关文章:

javascript - OnMouseOver 事件中的设置状态返回 TypeError : Cannot read property - React

javascript - Keyup 函数不适用于表单输入

regex - 解析 .ssh/config 以获取代理信息

Javascript 和 Regex - 字符串中单词的严格匹配

c# - 如何使正则表达式只匹配完全匹配项?

javascript - webpack 4 和 d3 es6 导入不起作用

javascript - Chart.js(折线图)工具提示持续时间/延迟

javascript - 多个fa-heart喜欢计数递增和递减

json - vuex 商店可以在开发服务器中使用,但不能在生产版本中使用

reactjs - SyntaxHighlighter 与 webpack 和 React