我的 Package.bundle 读取
var reqContext = require.context('./', true, /\.js$/);
reqContext.keys().map(reqContext);
基本上包括所有 .js 文件。
我希望该表达式排除任何 ***.spec.js 文件。有任何正则表达式可以排除 .spec.js 文件吗?
我的 Package.bundle 读取
var reqContext = require.context('./', true, /\.js$/);
reqContext.keys().map(reqContext);
基本上包括所有 .js 文件。
我希望该表达式排除任何 ***.spec.js 文件。有任何正则表达式可以排除 .spec.js 文件吗?
由于/\.js$/
允许所有以.js
结尾的文件(因为它基本上匹配了字符串末尾的.js
),而你需要允许没有.spec
在它们之前的所有.js
文件,因此你需要一个带有负向先行断言的正则表达式:
/^(?!.*\.spec\.js$).*\.js$/
请参见这个正则表达式演示
细节:
^
- 字符串开始(?!.*\.spec\.js$)
- 该行不能以.spec.js
结尾,如果是,则不匹配.*
- 除换行符外的任意0个或多个字符\.js
- .js
序列$
- 字符串结束尽管被接受的回答在技术上是正确的,但您不应该需要将这个正则表达式添加到您的webpack配置中。
这是因为webpack只编译通过require
或import
引用的文件,因此您的spec.js
文件将不会被包含在bundle中,因为它们在实际代码中没有被引用。
require
和import
代码到.spec文件中进行测试,对吧? - volume one.spec
文件,因为应用程序代码没有从.spec
文件中导入(只有相反的情况)。 - cdimitroulas
/(?!\.spec\.js$)\.js$/
没有太多意义。/(?!\.spec\.js$)\.js$/
相当于/\.js$/
,因为前瞻结果总是为真。 - Wiktor Stribiżew