递归排除node_modules

时间:2019-06-29 20:53:42

标签: javascript regex firebase mocha regex-negation

在我的项目目录中设置Firebase时遇到了一个特定问题。

最初,项目的层次结构可以由以下内容总结:

.
./src
./src/my_code.js
./src/my_code.test.js
./node_modules
./node_modules/...
./package.json

要运行测试,我正在使用摩卡咖啡。

在这个网站上,我发现了一个非常有用的 regexp ,它可以匹配整个项目层次结构中的所有* .test.js文件,除了 node_modules “ branch” :

./{,!(node_modules)/**}/*test.js

对我来说,下一步是在目录中初始化Firebase Functions&Hosting。

已做出设计选择,以在functions中设置./src文件夹。

运行firebase init并回答所有问题后,我的文件夹如下所示:

.
./src
./src/my_code.js
./src/my_code.test.js
// ===== NEW =====
./src/functions
./src/functions/index.js
./src/functions/index.test.js
./src/functions/node_modules
./src/functions/node_modules/...
./src/functions/package.json
// ===============
./node_modules
.node_modules/...
./package.json

问题在于 regexp似乎不排除 ./src/functions/node_modules 文件夹

我真的不愿意扩展这个很酷的正则表达式,不知道是否必须在某处添加**!(src/functions/node_modules)

1 个答案:

答案 0 :(得分:0)

我深入研究了this mochajs' issue

首先,在我的问题的评论中,如@Wiktor提到的./{,!(node_modules)/**}/*test.js不是正则表达式,而是一个全局变量。

由于mochajs现在实现了--exclude标志功能,因此我现在没有进一步研究这个概念。

我的解决方法是:mocha \"./**/*test.js\" --exclude \"./**/node_modules/**\"