Npm 匹配所有文件,具有特定扩展名的文件除外

Npm 匹配所有文件,具有特定扩展名的文件除外,npm,wildcard,glob,minmatch,Npm,Wildcard,Glob,Minmatch,如何修复/src/js/**/!(*.spec.js |*.test.js),所以它不返回目录?我试过像这样的/src/js/***。!(spec.js | test.js),但它匹配除目录之外的所有文件,与/src/js/***相同。/src/js/**/的输出示例!(*.spec.js |*.test.js): 期望输出: [ './src/js/__tests__/example.js', './src/js/example.js', './src/js/index.js' ]

如何修复
/src/js/**/!(*.spec.js |*.test.js)
,所以它不返回目录?我试过像这样的
/src/js/***。!(spec.js | test.js)
,但它匹配除目录之外的所有文件,与
/src/js/***
相同。
/src/js/**/的输出示例!(*.spec.js |*.test.js)

期望输出:

[ './src/js/__tests__/example.js',
  './src/js/example.js',
  './src/js/index.js' ]

版本7.1.3

基本上,您希望排除案例中的文件夹,这可以通过在末尾添加
(^/)
来完成

完整的glob应该是
/src/js/**/!(*.spec.js |*.test.js |^/)

您可以验证micromatch语法

更新:

对于npm模块glob,有一个名为
nodir
的选项。如果设置为true,则输出中不会有任何目录路径

例如:

var glob = require("glob")

glob("./src/js/**/!(*.spec.js|*.test.js)", { nodir: true }, (er, files) => {
  console.log(er, files)
})

你可以找到关于所有可用选项的更多信息

我澄清得不够清楚,我发布的通配符返回了所需的文件,但它还包括它找到的任何目录,我需要让它只返回文件。啊,这一澄清更有意义。基本上,您希望排除案例中的文件夹,这可以通过在末尾添加
(^/)
来完成。完整的glob应该是
/src/js/**/!(*.spec.js |*.test.js)(^/)
当我执行此命令时,会得到一个空数组。啊,如果您使用的是模块glob,您可以将nodir选项设置为true。我将在答案中添加一个示例。
var glob = require("glob")

glob("./src/js/**/!(*.spec.js|*.test.js)", { nodir: true }, (er, files) => {
  console.log(er, files)
})