通配符和NPM Minimatch:递归匹配所有文件和目录,除了特定的目录

4

给定目录结构:

/Users/doge/very/amaze.js
/usr/local/bin/wow
/node_modules/
/css/
/css/somefile.css
/lib/
/somelib/
/anotherlib/somedir/finallib.js
/index.html
/somefile.test
/somelib/file.html
/firstdir/seconddir/file.css
/node_modules.txt

我该如何使用extglob来排除node_modules目录?
/!(node_modules)

上面的匹配规则匹配根目录下的所有内容,但不包括 node_modules 目录和文本文件(我们想要包含它们)。它还不会递归地匹配子目录。
/!(node_modules)/**

这个更接近了,但是它也排除了根目录下的所有文件。即使它包括根级别的文件,我猜它也会排除node_modules.txt文件。
附注:这是使用grunt-sshminimatch节点模块进行文件匹配的。

1
你试过这个吗 /!(node_modules){,/**} - Chen Dachao
嗨,Larry,我其实早就得出了这个结论,但忘记了我在SO上问过这个问题。如果你想正式回答并将其作为答案,我会给你点赞。 - craig
谢谢,@craignewkirk,一个官方回答可以使这个问题更完美,并且易于其他人找到。 - Chen Dachao
1个回答

4
这个可以解决您的问题:/!(node_modules){,/**}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接